pXcon_add (var constraintType, ENTITY* entity1, ENTITY* entity2, var intern_collision )

Erstellt ein Gelenk in entity1 und entity2. Der Typ des Gelenks wird über constraintType bestimmt. entity2 kann für die meisten Gelenke auf NULL gesetzt werden (mit Ausnahme von PH_WHEEL, das immer 2 Entities verlangt) - in diesem Fall wird entity1 stattdessen mit dem Weltkoordinatensystem verbunden. Manche Gelenke setzen automatisch Defaultwerte, PH_HINGE und PH_BALL setzen den Ankerpunkt so, dass er in der Mitte zwischen den Nullpunkten der Entities liegt.

Parameter:

constraintType Eine der unterstützten Gelenk-Konstanten PH_HINGE, PH_WHEEL, PH_BALL, PH_SLIDER, PH_ROPE, PH_6DJOINT
entity1 Erste Verbindungsentity
entity2 Zweite Entity, Karosserie für ein Rad oder NULL für ein Gelenk mit einem Welt-Fixpunkt. Muss sich von entity1 unterscheiden.
intern_collision 1 = lasse entity1 und entity2 miteinander kollidieren, 0 = keine interne Kollision

Rückgabewerte:

NxWheelShape* bzw.. NxJoint*-Pointer für weitere Gelenkmanipulationen, wenn erfolgreich, ansonsten NULL.

Geschwindigkeit:

Mittel

Beispiele:

function joints_test()
{
  ENTITY* chain1 = ent_create("shell2.mdl",vector(-40,100,65),NULL);
  ENTITY* chain2 = ent_create("shell2.mdl",vector(-40,100,39),NULL);
  ENTITY* chain3 = ent_create("shell2.mdl",vector(-40,100,13),NULL);

  set(chain1,PASSABLE);
  set(chain2,PASSABLE);
  set(chain3,PASSABLE);

  pXent_settype(chain1,1,PH_CAPSULE);
  pXent_settype(chain2,1,PH_CAPSULE);
  pXent_settype(chain3,1,PH_CAPSULE);

  pXcon_add ( PH_SLIDER, chain1, NULL, 0 );
  pXcon_add ( PH_HINGE, chain2, chain1, 0 );
  pXcon_add ( PH_BALL, chain3, chain2, 1 );

  pXcon_setparams1 (chain1, vector(chain1.x,chain1.y,chain1.z+chain1.max_z), vector(0,-1,0), nullvector );
  pXcon_setparams1 (chain2, vector(chain2.x,chain2.y,chain2.z+chain2.max_z), vector(-1,0,0), nullvector );
  pXcon_setparams1 (chain3, vector(chain3.x,chain3.y,chain3.z+chain3.max_z), vector(0,-1,0), nullvector );

  pXcon_setparams2 (chain1, vector(-1.6,1.6,50), NULL, NULL);
  pXcon_setparams2 (chain2, vector(-45,45,0), NULL, NULL);
  pXcon_setparams2 (chain3, vector(-45,45,0), NULL, NULL);

  pXent_setsleep(chain1, 1);
  pXent_setsleep(chain2, 1);
  pXent_setsleep(chain3, 1);
}

Siehe auch:

Constraints, pXcon_remove, pXcon_setparams1, pXcon_setparams2, pXcon_add