ent_bonehandle(ENTITY*,STRING* name,var index)
ent_boneparent(ENTITY*,STRING* name,var index)
Findet das Handle und optional den Namen eines Bones ((ent_bonehandle, A7.81) oder des 'Parent'-Bones dem ein Bone mit der gegebenen Indexnummer zugewiesen ist (ent_boneparent, A7.10).
Parameter:
ENTITY* |
Entity-Pointer |
name |
Name oder Handle des Bones (STRING* oder char*),
oder, wenn nur die Index-Nummer angegeben ist, NULL
|
index |
Index-Nummer des Bones, oder 0 wenn STRING* den Bone-Namen oder -Handle enthält. |
Rückgabewerte:
Handle des Bones bzw. des Bone-Parents (0, wenn der Bone keinen Parent hat)
Modifiziert:
name
(auf den Bone bzw. Parent-Bone gesetzt, wenn beide, name und index ungleich Null sind)
.
Bemerkungen:
- Entity-Szene und Bone-Namen müssen aus mindestens 3 Zeichen bestehen.
- Sind sowohl ein name und index gegeben, wird index zum Finden des Bones benutzt und name auf den Namen des Bones bzw. Parent-Bones gesetzt.
- Die Index-Nummer ist die Nummer eines Bones innerhalb des Skelett und beginnt mit 1.
Beim Aufrufen der Funktion ent_boneparent in einer Schleife über die Index-Nummer
von 1 bis ent_bones(), kann die Struktur
des gesamten Skelettes bestimmt werden.
- Ein Bone-Handle ist eine long-Variable, die die Nummer des Bones beginnend
mit 1 enthält. Alle Bone-Funktionen akzeptieren auch ein Handle anstelle eines Namens. Das Verwenden von Handles ist schneller.Eine Index-Nummer läßt sich per Casten (Umwandeln) in long konvertieren, z. B. long handle = (long)index. Ein Bone-Handle kann, indem es in ein var gecastet wird, in eine Index-Nummer konvertiert werden, z. B. var index = (var)handle.
Geschwindigkeit:
Schnell
Beispiel (lite-C):
// return the handle of the first child bone of a bone with a given index
long ent_bonechild(ENTITY* ent,var index)
{
var i;
for (i=1; i<=ent_bones(ent); i++)
if (index == ent_boneparent(ent,NULL,i))
return (long)i;
return 0; // no child found
}
// get the name of the parent bone when a child index is given.
STRING* parent_name = "";
ent_setboneparent(ent,parent_name,child_index); // retrieve the parant name from the child index.
// get the name of the parent bone when a child name is given.
STRING* child_name = "foot_left";
long handle = ent_setboneparent(ent,child_name,0); // return a handle to the parent bone
ent_setbonehandle(ent,parent_name,(var)handle); // retrieve the parant name from the parent handle.
Siehe auch:
vec_for_bone, ent_bonename, ent_bones
► latest version online