Registriert bzw. löscht eine Entity aus dem Physiksystem. Sobald sie registriert ist, wird die Entity vom Physiksystem kontrolliert und ein "PhysX Actor" wird erstellt (die Entity-Gruppen-ID wird automatisch auf 1 gesetzt). Nach dem Löschen der Registrierung wird der Actor gelöscht und die Entity nicht mehr von der Physik kontrolliert.
entity | Entity-Pointer, der registriert bzw. gelöscht werden soll, oder NULL wenn das Level registriert wird. |
type |
PH_STATIC = registriert die Entiy als statisches Hindernis. PH_RIGID = registriert die Entity als dynamischen, starren Körper, der sich bewegen kann (nur Modell-Entities). PH_CHAR = registriert die Entity als einen Charaktersteuerer (nur Modell-Entities). 0 = löscht die Registrierung der Entity aus dem Physiksystem.unregister the entity from the physics ystem. |
hull |
PH_BOX - Rechteckige, als Box geformte Hülle. PH_SPHERE - Runde Hülle. PH_CAPSULE - Zylindrische Kollisionshülle mit einer Halbkugel oben und unten. PH_POLY - Polygonale Hülle, nur für statische (PH_STATIC) Actors. PH_CONVEX - Einfache polygonale Hülle für dynamische Actors - maximal 256 Polygone. PH_TERRAIN - Höhenmap; PH_POLY - funktioniert oftmals besser für Terrain. PH_PLANE - Grundebene bei der Position z=0. Add PH_MODIFIED zum Wieder-Registrieren einer geänderten PH_POLY- oder PH_CONVEX -Hülle. |
Bei Erfolg, gegenwärtige Anzahl von PhysX-Actors, ansonsten 0.
ENTITY* myCrate; // ... // on startup myCrate = ent_create( "crate.mdl", nullvector, any_function ); pXent_settype( myCrate, PH_RIGID, PH_BOX ); pXent_settype( myCrate, 0, 0 ); // ... // during gameplay let's have fun with a crate: var position; pXent_settype( myCrate, PH_RIGID, PH_BOX ); position= myCrate.x; // this will give you an approximate position //myCrate.x = position + 10; // this won't work! pXent_settype( myCrate, 0, 0 ); myCrate.x = position + 10; // unregistered - now we can change the position pXent_settype( myCrate, PH_RIGID, PH_BOX ); // restart from new position
function f_ball() { VECTOR vKick; vec_set(vKick,vector(300,0,100)); pXent_settype(my, PH_RIGID, 1); pXent_setfriction(my, 100); pXent_setelasticity(my, 10); vec_rotate(vKick,camera.pan); pXent_addvelcentral(my, vKick); } function on_mouse_right_event() { while (mouse_left) {wait (1);} ENTITY* ball = ent_create ("explosion.mdl", camera.x, f_ball); set(ball,PASSABLE); }