DIFF

RigidBody API

Part of Physics system

Topics

Functions

proto native void dBodyActive(notnull IEntity ent, ActiveState activeState)more…
proto void dBodyApplyForce(notnull IEntity body, vector force)Applies constant force on a rigidbody (origin)
proto void dBodyApplyForceAt(notnull IEntity body, vector pos, vector force)Applies constant force on a position
proto void dBodyApplyImpulse(notnull IEntity body, vector impulse)Applies impuls on a rigidbody (origin)more…
proto void dBodyApplyImpulseAt(notnull IEntity body, vector impulse, vector pos)Applies impuls on a pos position in world coordinatesmore…
proto native void dBodyApplyTorque(notnull IEntity body, vector torque)
proto native void dBodyApplyTorqueImpulse(notnull IEntity ent, vector torqueImpulse)
proto native dBlock dBodyCollisionBlock(notnull IEntity ent1, notnull IEntity ent2)Disables collisions between two entities
proto native float dBodyComputeAngularImpulseDenominator(notnull IEntity ent, vector axis)
proto native float dBodyComputeImpulseDenominator(notnull IEntity ent, vector position, vector normal)
proto bool dBodyCreateDynamicEx(notnull IEntity ent, vector centerOfMass, float mass, PhysicsGeomDef geoms[])Creates RigidBody from custom made geometries. The geometries are deleted when rigid body is destroyedmore…
proto bool dBodyCreateGhostEx(notnull IEntity ent, PhysicsGeomDef geoms[])
proto bool dBodyCreateStaticEx(notnull IEntity ent, PhysicsGeomDef geoms[])Creates RigidBody from custom made geometries. The geometries are deleted when rigid body is destroyedmore…
proto native void dBodyDestroy(notnull IEntity ent)Destroys attached physics bodymore…
proto native void dBodyDynamic(notnull IEntity ent, bool dynamic)more…
proto native void dBodyEnableCCD(notnull IEntity body, float maxMotion, float sphereCastRadius)If both maxMotion and shapeCastRadius is >=0 then the continuous collision detection is enabled. If you want to disable it, use -1more…
proto native bool dBodyEnableGravity(notnull IEntity ent, bool enable)
proto vector dBodyGetAngularVelocity(notnull IEntity body)Gets angular velocity for a rigidbodymore…
proto native vector dBodyGetCenterOfMass(notnull IEntity body)returns center of mass offset
proto native void dBodyGetDirectWorldTransform(notnull IEntity body, out vector matrix[4])
proto native int dBodyGetGeomInteractionLayer(notnull IEntity ent, int index)
proto native int dBodyGetInteractionLayer(notnull IEntity ent)more…
proto native vector dBodyGetInvInertiaDiagLocal(notnull IEntity ent)
proto void dBodyGetInvInertiaTensorWorld(notnull IEntity body, out vector inertiaTensorWS[3])
proto native float dBodyGetKineticEnergy(notnull IEntity body)
proto native vector dBodyGetLocalInertia(notnull IEntity ent)
proto native float dBodyGetMass(notnull IEntity ent)more…
proto native vector dBodyGetVelocityAt(notnull IEntity body, vector globalpos)more…
proto native void dBodyGetWorldTransform(notnull IEntity body, out vector matrix[4])more…
proto native bool dBodyIsActive(notnull IEntity ent)more…
proto native bool dBodyIsDynamic(notnull IEntity ent)more…
proto native bool dBodyIsSet(notnull IEntity ent)Has the entity attached physics body?more…
proto native bool dBodyIsSolid(notnull IEntity ent)
proto native void dBodyRemoveBlock(notnull IEntity worldEntity, dBlock block)
proto void dBodySetAngularVelocity(notnull IEntity body, vector angvel)Changed an angular velocitymore…
proto native void dBodySetDamping(notnull IEntity ent, float linearDamping, float angularDamping)
proto native void dBodySetGeomInteractionLayer(notnull IEntity ent, int index, int mask)
proto native void dBodySetInertiaTensorM(notnull IEntity body, vector m[3])
proto native void dBodySetInertiaTensorV(notnull IEntity body, vector v)
proto native void dBodySetInteractionLayer(notnull IEntity ent, int mask)
proto native void dBodySetLinearFactor(notnull IEntity body, vector linearFactor)Sets scale factor for all impulses/velocities/forces. Default is <1,1,1>. Zero any axis if you want to do 2D physics
proto native void dBodySetMass(notnull IEntity body, float mass)more…
proto native void dBodySetSleepingTreshold(notnull IEntity body, float linearTreshold, float angularTreshold)
proto native void dBodySetSolid(notnull IEntity ent, bool solid)
proto native void dBodySetTargetMatrix(notnull IEntity body, vector matrix[4], float timeslice)Sets target transformation. If timeslice == dt (simulation step delta time), it will happen in next step, otherwise in time = timeslice
proto native vector GetVelocity(notnull IEntity ent)Returns linear velocitymore…
proto native void SetVelocity(notnull IEntity ent, vector vel)Sets linear velocity (for Rigid bodies)more…

Function Documentation

dBodyActive

proto native void dBodyActive(notnull IEntity ent, ActiveState activeState)

dBodyApplyImpulse

proto void dBodyApplyImpulse(notnull IEntity body, vector impulse)

Applies impuls on a rigidbody (origin)


dBodyApplyImpulseAt

proto void dBodyApplyImpulseAt(notnull IEntity body, vector impulse, vector pos)

Applies impuls on a pos position in world coordinates


dBodyCreateDynamicEx

proto bool dBodyCreateDynamicEx(notnull IEntity ent, vector centerOfMass, float mass, PhysicsGeomDef geoms[])

Creates RigidBody from custom made geometries. The geometries are deleted when rigid body is destroyed

centerOfMass
Offset from object-pivot to center of mass
mass
Body mass
geoms
array of custom made geometries
autoptr PhysicsGeomDef geoms[] = {PhysicsGeomDef("", dGeomCreateBox(size), "material/default", 0xffffffff)};
dBodyCreateDynamicEx(this, center, 1.0, geoms);

dBodyCreateStaticEx

proto bool dBodyCreateStaticEx(notnull IEntity ent, PhysicsGeomDef geoms[])

Creates RigidBody from custom made geometries. The geometries are deleted when rigid body is destroyed

geoms
array of custom made geometries
autoptr PhysicsGeomDef geoms[] = {PhysicsGeomDef("", dGeomCreateBox(size), "material/default", 0xffffffff)};
dBodyCreateStaticEx(this, geoms);

dBodyDestroy

proto native void dBodyDestroy(notnull IEntity ent)

Destroys attached physics body


dBodyDynamic

proto native void dBodyDynamic(notnull IEntity ent, bool dynamic)

dBodyEnableCCD

proto native void dBodyEnableCCD(notnull IEntity body, float maxMotion, float sphereCastRadius)

If both maxMotion and shapeCastRadius is >=0 then the continuous collision detection is enabled. If you want to disable it, use -1

maxMotion
max motion threshold when sphere-cast is performed, to find time of impact. It should be little bit less than size of the geometry to catch the situation when tunelling can happen
sphereCastRadius
The radius of the largest possible sphere, that is completelly inside the body geometry.

dBodyGetAngularVelocity

proto vector dBodyGetAngularVelocity(notnull IEntity body)

Gets angular velocity for a rigidbody


dBodyGetInteractionLayer

proto native int dBodyGetInteractionLayer(notnull IEntity ent)

dBodyGetMass

proto native float dBodyGetMass(notnull IEntity ent)


dBodyGetWorldTransform

proto native void dBodyGetWorldTransform(notnull IEntity body, out vector matrix[4])

dBodyIsActive

proto native bool dBodyIsActive(notnull IEntity ent)

dBodyIsDynamic

proto native bool dBodyIsDynamic(notnull IEntity ent)

dBodyIsSet

proto native bool dBodyIsSet(notnull IEntity ent)

Has the entity attached physics body?


dBodySetAngularVelocity

proto void dBodySetAngularVelocity(notnull IEntity body, vector angvel)

Changed an angular velocity

body
Rigid body
angvel
Angular velocity, rotation around x, y and z axis (not yaw/pitch/roll)

dBodySetMass

proto native void dBodySetMass(notnull IEntity body, float mass)

GetVelocity

proto native vector GetVelocity(notnull IEntity ent)

Returns linear velocity

ent
IEntity entity which origin will be set
mat
vector[4] matrix to be set

Returns: vector linear velocity

Man player = g_Game.GetPlayer();
Print( GetVelocity(player) );

>> <0,0,0>

SetVelocity

proto native void SetVelocity(notnull IEntity ent, vector vel)

Sets linear velocity (for Rigid bodies)

ent
entity which velocity will be set
vel
velocity vector to be set