5.4 KiB
INERTIA
Interface to the built-in 2D physics engine of the same name (Inertia). Manages rigid bodies: creating objects, linking them to animations, gravity, velocities, damping, and applying forces. Used in Reksio i Kretes w Akcji.
Every physics body has an objectId — an integer used by most methods to identify the body. The world is loaded from an .INE file (see Engine overview) via LOAD.
Methods
ADDFORCE
void ADDFORCE(INTEGER objectId, INTEGER forceX, INTEGER forceY)
Applies a force to the object along the X and Y axes.
Parameters
objectId— object identifier.forceX,forceY— force components.
Examples
EXTWORLD^ADDFORCE(1,-500,0);
EXTWORLD^ADDFORCE(1,0,-50);
CREATESPHERE
void CREATESPHERE(INTEGER objectId, INTEGER posX, INTEGER posY, INTEGER radius)
Creates a sphere of the given centre position and radius in the physics world, assigning the given identifier.
Parameters
objectId— identifier for the new body.posX,posY— sphere centre position.radius— sphere radius.
Examples
EXTWORLD^CREATESPHERE(5,10,10,10);
DELETEBODY
void DELETEBODY(INTEGER objectId)
Removes a body from the physics engine.
Parameters
objectId— identifier of the body to remove.
Examples
EXTWORLD^DELETEBODY(IHANDLEDEL);
EXTWORLD^DELETEBODY(IRAKIETAOBJ);
GETPOSITIONX
INTEGER GETPOSITIONX(INTEGER objectId)
Returns the body's current X position.
Parameters
objectId— body identifier.
Returns: INTEGER — X coordinate.
GETPOSITIONY
INTEGER GETPOSITIONY(INTEGER objectId)
Returns the body's current Y position.
Parameters
objectId— body identifier.
Returns: INTEGER — Y coordinate.
GETSPEED
DOUBLE GETSPEED(INTEGER objectId)
Returns the body's speed (linear velocity magnitude).
Parameters
objectId— body identifier.
Returns: DOUBLE — speed value.
LINK
void LINK(INTEGER objectId, STRING animoName, BOOL flag1, BOOL flag2)
Binds a physics body to an ANIMO animation — the animation's position is updated from the physics simulation. The meaning of the two boolean flags has not been established (shipping games always pass TRUE for both).
Parameters
objectId— physics body identifier.animoName— name of theANIMOvariable.flag1,flag2— configuration flags (purpose not established).
Examples
EXTWORLD^LINK(1,"ANNSZCZUREK",TRUE,TRUE);
EXTWORLD^LINK(IOBIEKT,["ANNSTRZAL_"+ISTRZAL],TRUE,TRUE);
LOAD
void LOAD(STRING path)
Loads a physics-world definition from an .INE file.
Parameters
path— path to the.INEfile.
Examples
EXTWORLD^LOAD("WORLD.INE");
RESETTIMER
void RESETTIMER()
Resets the simulation's internal timer.
Examples
EXTWORLD^RESETTIMER();
SETGRAVITY
void SETGRAVITY(DOUBLE gravityX, DOUBLE gravityY)
Sets the global gravity vector. A value of (0, 0) disables gravity.
Parameters
gravityX,gravityY— gravity components.
Examples
EXTWORLD^SETGRAVITY(0,0);
SETLINEARDAMPING
void SETLINEARDAMPING(INTEGER objectId, INTEGER linearDamping)
Sets linear damping (gradual reduction of linear velocity) for a body.
Parameters
objectId— body identifier.linearDamping— damping value.
Examples
EXTWORLD^SETLINEARDAMPING(1,300);
SETMATERIAL
void SETMATERIAL(INTEGER objectId, STRING material)
Sets the body's material. Materials control how bodies respond to contact (rigidity, elasticity, friction). One name encountered in shipping scripts is "TRIGGER", for which the engine fires the ONSIGNAL^TRIGGER signal on the linked animation.
Parameters
objectId— body identifier.material— material name.
Examples
EXTWORLD^SETMATERIAL(IOBIEKT,"TRIGGER");
SETPOSITION
void SETPOSITION(INTEGER objectId, INTEGER posX, INTEGER posY)
Sets the body's absolute position in the physics world.
Parameters
objectId— body identifier.posX,posY— new position.
Examples
EXTWORLD^SETPOSITION(IOBIEKT,[ANNSZCZUREK^GETCENTERX()+70],[ANNSZCZUREK^GETCENTERY()-1]);
EXTWORLD^SETPOSITION(IRAKIETAOBJ,ANNDODATKI_7^GETPOSITIONX(),ANNDODATKI_7^GETPOSITIONY());
SETVELOCITY
void SETVELOCITY(INTEGER objectId, INTEGER speedX, INTEGER speedY)
Sets a body's velocity along the X and Y axes.
Parameters
objectId— body identifier.speedX,speedY— velocity components.
Examples
EXTWORLD^SETVELOCITY(1,0,0);
EXTWORLD^SETVELOCITY(IOBIEKT,8,0);
TICK
void TICK()
Advances the simulation by one step. Without TICK the physics world stays frozen — typically called from a TIMER's ONTICK signal.
Examples
EXTWORLD^TICK();
UNLINK
void UNLINK(INTEGER objectId)
Breaks an animation binding established with LINK.
Parameters
objectId— body identifier.
Examples
EXTWORLD^UNLINK(IID);
EXTWORLD^UNLINK(1);
Signals
ONINIT
Fired when the object is initialised.
ONSIGNAL
Fired when a signal arrives (see Events and signals).