neBodyType

typedef enum
{
    NE_TERRAIN
= 0,
    NE_RIGID_BODY
,
    NE_ANIMATED_BODY
,
} neBodyType;

This enum identifies the type of objects of bodyA and bodyB in the neCollisionInfo structure.


neCollisionInfo

typedef struct neCollisionInfo neCollisionInfo;

struct neCollisionInfo
{
    neByte
* bodyA;
    neByte
* bodyB;
    neBodyType
typeA;
    neBodyType
typeB;
    neGeometry
* geometryA;
    neGeometry
* geometryB;
    s32
materialIdA;
    s32
materialIdB;
    neV3
bodyContactPointA;
    neV3
bodyContactPointB;
    neV3
worldContactPointA;
    neV3
worldContactPointB;
    neV3
relativeVelocity;
    neV3
collisionNormal;
};

This structure is passed to the application during neCollisionCallback. It contains various blocks of information about a collision which has occurred during the current simulation step.

bodyA, bodyB, typeA, typeB

bodyA and bodyB are pointers to the bodies which are colliding. Their type depends on the value of typeA and typeB. If the value of typeB is NE_TERRAIN, then bodyB is NULL.

geometryA, geometryB

These are pointers to neGeometry objects involved in the collision, one from each of the body. If typeB equal to NE_TERRAIN, then geometryB is NULL

materialA, materialB

The material indices of the geometries which are colliding.

bodyContactPointA, bodyContactPointB, worldContactPointA, worldContactPointB

The contact points in body coordinates and in world coordinates.

relativeVelocity

The relativeVelocity of the contact points.

collisionNormal

The direction of the collision normal.


Callback Function Types

typedef void (neLogOutputCallback)(char * logString);

typedef void (neCollisionCallback)(neCollisionInfo & collisionInfo);

typedef void (neTerrainTriangleQueryCallback)(const neV3 & minBound, const neV3 & maxBound, neTriangleMesh & triMesh);