f32 GetMass();
void SetMass(f32
mass);
Sets and retrieves the mass of the rigid body. This property governs how fast a rigid body will accelerate under a given force, as well as how big an impulse is needed to change the body's velocity.
void SetInertiaTensor(const
neM3 & tensor);
void SetInertiaTensor(const
neV3 & tensor);
Set and retrieve the body's mass inertia tensor. This property is analagous to mass, but effects the rotational behaviour. Use utility functions such as neBoxInertiaTensor to help you set this value.
void SetCollisionID(s32
cid);
s32 GetCollisionID();
Set and retrieve the collision ID of the rigid body. The collision ID, along with the neCollisionTable, determines how the rigid body will respond when a collision has occurred with other objects in the simulation. See also neCollisionTable.
void SetUserData(u32
userData);
u32 GetUserData();
Set and retrieve the user data property. This is a u32 value used to store game-specific information associated with the rigid body.
s32 GetGeometryCount();
neGeometry * AddGeometry();
neBool RemoveGeometry(neGeometry
* g);
void BeginIterateGeometry();
neGeometry * GetNextGeometry();
Use these functions to create and retrieve neGeometry objects for the rigid body. The collection neGeometry belonging to a rigid body defines the body's collision boundary. It also defines the rigid body's breaking behaviour. A rigid body can also exist and be simulated without any neGeomtry assigned to it; it just won't collide with anything in the simulation. All neGeometry objects within a rigid body will be freed automatcally when the rigid body is freed. See also neGeometry.
neRigidBody * BreakGeometry(neGeometry * g);
Breaks off the geometry object, which must belong to the rigid body. Returns the newly created rigid body.
neSensor * AddSensor();
neBool RemoveSensor(neSensor
* s);
void BeginIterateSensor();
neSensor * GetNextSensor();
Use these functions to create and retrieve neSensor objects for the rigid body. See neSensor.
neRigidBodyController * AddController(neRigidBodyControllerCallback
* controller, s32 period);
neBool RemoveController(neRigidBodyController
* rbController);
void BeginIterateController();
neRigidBodyController * GetNextController();
Use these functions to create and retrieve neRigidBodyController objects for the rigid body. See neRigidBodyController.
neV3 GetPos();
void SetPos(const
neV3 & p);
neM3 GetRotationM3();
neQ GetRotationQ();
void SetRotation(const
neM3 & m);
void SetRotation(const
neQ & q);
neT3 GetTransform();
Set and retrieve spatial states for the rigid body with these functions.
neV3 GetVelocity();
void SetVelocity(const
neV3 & v);
neV3 GetAngularVelocity();
neV3 GetAngularMomentum();
void SetAngularMomentum(const
neV3& am);
Set and retrieve dynamic states for the rigid body with these functions.
void UpdateBoundingInfo();
Update the internal bounding information of the rigid body. Whenever the user changes the geometry and/or sensor of the rigid body by adding, removing, or modifying the geometry and/or sensor, this function needs to be called to update the internal bounding information.
void SetForce(const
neV3 & force);
void SetTorque(const
neV3 & torque);
void SetForce(const
neV3 & force, const
neV3 & pos);
neV3 GetForce();
neV3 GetTorque();
Set and retrieve the force/torque acting on the rigid body. A force will accelerate the rigid body's velocity. A torque will accelerate the rigid body's angular velocity. When the force is applied at a point other than the Center of Mass of the rigid body, it will also produce a torque, hence the second SetForce function, where pos is defined in world coordinates.
The force/torque will be apply continously. To apply no force/torque to the rigid body set the value to zero.
void ApplyImpulse(const
neV3 & impulse);
void ApplyImpulse(const
neV3 & impulse, const
neV3 & pos);
void ApplyTwist(const
neV3 & twist);
Apply an impulse or a twist to the rigid body. An impulse will produce a immediate change in velocity. A twist will produce immediate a change in angular velocity. An impulse applied at a point other than the Center of Mass of the rigid body also produce a twist. To do this, use the second ApplyImpulse function, where pos is define in world coordinates of the application point.
void GravityEnable(neBool
yes);
neBool GravityEnable();
Enable or disable gravity for the rigid body. If gravity is enabled, the rigid body will have a force equal to
gravity x mass
automatically applied to it by the simulator.
void CollideConnected(neBool
yes);
neBool CollideConnected();
Define whether or not a rigid body will collide with another body connected to it via joints (neJoint). The behaviour defined by this function overrides the behaviour defined by the neCollisionTable.
void Active(neBool yes,
neRigidBody * hint = NULL);
void Active(neBool yes,
neAnimatedBody * hint
= NULL);
neBool Active();
Activate or deactivate the rigid body. When a rigid body is deactivated, the simulator will not update its dynamic state, will not call its controllers, and the rigid body will not collide with anything.
When activating (yes == true), an optional hint can be supplied. The hint should be a rigid body or an animated body near where the rigid body being activated is. This can help speed up the introduction of the newly-activated rigid body into the simulation.