Trace

Description: BSP collision detection code

Source file: …\genesis3d\OpenSource\Source\World\TRACE.h

Contents:

Functions: GEWorldCollision, WorldCollisionBNode, WorldCollisionExact, WorldCollisionExact2, MiscCollision, MiscCollision2, WorldCollisionBBox, TestModelMove, ModelCollision, InverseTreeFromBox, GetContents, GetMoveBox, SetupIntersect, IntersectWorldBSP, BoxOnPlaneSide, BBoxInVisibleLeaf

Constants: view

Addition for Genesis3D v1.6: GetTexureName

Constants:

#define PSIDE_FRONT   1
#define PSIDE_BACK   2
#define PSIDE_BOTH   (PSIDE_FRONT|PSIDE_BACK)
#define PSIDE_FACING  4

 

Return to Contents

Functions:

geBoolean Trace_GEWorldCollisiongeWorld* World, const  geVec3d* Mins, const  geVec3d* Maxs, const  geVec3d* Front, const  geVec3d* Back, uint32  Contents, uint32  CollideFlags,  uint32  UserFlags,  GE_CollisionCB* CollisionCB, void * Context, GE_Collision* Col);

Notes:

uint32  Contents,   // Contents to collide with

uint32  CollideFlags,  // GE_COLLIDE_ALL, etc...

uint32  UserFlags,   // Flags to mask against actors

 

Return to Contents

geBoolean Trace_WorldCollisionBNode(geWorld* World, geVec3d* Front, geVec3d* Back, int32* ModelNum, geVec3d* Impact, int32* Node, int32* Plane, int32* Side);

 

Return to Contents

geBoolean Trace_WorldCollisionExact(geWorld* World, const geVec3d* Front, const geVec3d* Back, uint32 Flags, geVec3d* Impact, GFX_Plane* Plane, geWorld_Model** Model, Mesh_RenderQ** Mesh, geActor** Actor, uint32 UserFlags, GE_CollisionCB* CollisionCB, void * Context);

 

Return to Contents

geBoolean Trace_WorldCollisionExact2(geWorld* World, const geVec3d* Front, const geVec3d* Back, geVec3d* Impact, int32* Node, int32* Plane, int32* Side);

// Internal only/ does not chek meshes/ returns index numbers into bsp structures for models

 

Return to Contents

geBoolean Trace_MiscCollision(GFX_BNode* BNodes, GFX_Plane* Planes, const geVec3d* Mins, const geVec3d* Maxs, const geVec3d* Front, const geVec3d* Back, geXForm3d* XForm, geVec3d* I, GFX_Plane* P);

Return to Contents

geBoolean Trace_MiscCollision2(GFX_BNode* BNodes, GFX_Plane* Planes, const geVec3d* Front, const geVec3d* Back, geVec3d* I, int32* P);

 

Return to Contents

geBoolean Trace_WorldCollisionBBoxgeWorld* World, const geVec3d* Mins, const geVec3d* Maxs, const geVec3d* Front, const geVec3d* Back, uint32 Flags, geVec3d* I, GFX_Plane* P, geWorld_Model** Model, Mesh_RenderQ** Mesh, geActor** Actor, uint32 UserFlags, GE_CollisionCB* CollisionCB, void * Context);

Return to Contents

geBoolean Trace_TestModelMovegeWorld * World, geWorld_Model * Model, const geXForm3d* DXForm, const geVec3d * Mins, const geVec3d* Maxs, const geVec3d * In, geVec3d* Out);

Return to Contents

geBoolean Trace_ModelCollision(geWorld * World, geWorld_Model * Model, const geXForm3d* DXForm, GE_Collision* Collision, geVec3d  * ImpactPoint);

 

Return to Contents

geBoolean Trace_InverseTreeFromBox(geVec3d* Mins, geVec3d* Maxs, GFX_BNode* BNodes, GFX_Plane* Planes);

 

Return to Contents

geBoolean Trace_GetContents(geWorld* World, const geVec3d* Pos, const geVec3d* Mins, const geVec3d* Maxs, uint32 Flags, uint32 UserFlags, GE_CollisionCB* CollisionCB, void * Context, GE_Contents* Contents);

 

Return to Contents

geBoolean Trace_GetTexureName(geWorld* World, const geVec3d* Pos, const geVec3d* Mins, const geVec3d* Maxs, char* TexName);

Added for Genesis3D v1.6

 

Return to Contents

void Trace_GetMoveBox(const geVec3d* Mins, const geVec3d* Maxs, const geVec3d* Front, const geVec3d* Back, geVec3d* OMins, geVec3d* OMaxs);

 

Return to Contents

void  Trace_SetupIntersect(geWorld* World);

 

Return to Contents

geBoolean Trace_IntersectWorldBSP(geVec3d* Front, geVec3d* Back, int32 Node);

 
Return to Contents

int32 Trace_BoxOnPlaneSide(const geVec3d* Mins, const geVec3d* Maxs, GFX_Plane* Plane);

Return to Contents

geBoolean Trace_BBoxInVisibleLeaf(geWorld* World, geVec3d* Mins, geVec3d* Maxs);

 

Return to Contents