34 #ifndef _ODE_COLLISION_TRIMESH_H_
35 #define _ODE_COLLISION_TRIMESH_H_
45 typedef struct dxTriMeshData* dTriMeshDataID;
51 ODE_API dTriMeshDataID dGeomTriMeshDataCreate(
void);
52 ODE_API
void dGeomTriMeshDataDestroy(dTriMeshDataID g);
56 enum { TRIMESH_FACE_NORMALS };
57 ODE_API
void dGeomTriMeshDataSet(dTriMeshDataID g,
int data_id,
void* in_data);
58 ODE_API
void* dGeomTriMeshDataGet(dTriMeshDataID g,
int data_id);
67 ODE_API
void dGeomTriMeshSetLastTransform( dGeomID g, dMatrix4 last_trans );
68 ODE_API dReal* dGeomTriMeshGetLastTransform( dGeomID g );
73 ODE_API
void dGeomTriMeshDataBuildSingle(dTriMeshDataID g,
74 const void* Vertices,
int VertexStride,
int VertexCount,
75 const void* Indices,
int IndexCount,
int TriStride);
77 ODE_API
void dGeomTriMeshDataBuildSingle1(dTriMeshDataID g,
78 const void* Vertices,
int VertexStride,
int VertexCount,
79 const void* Indices,
int IndexCount,
int TriStride,
84 ODE_API
void dGeomTriMeshDataBuildDouble(dTriMeshDataID g,
85 const void* Vertices,
int VertexStride,
int VertexCount,
86 const void* Indices,
int IndexCount,
int TriStride);
88 ODE_API
void dGeomTriMeshDataBuildDouble1(dTriMeshDataID g,
89 const void* Vertices,
int VertexStride,
int VertexCount,
90 const void* Indices,
int IndexCount,
int TriStride,
96 ODE_API
void dGeomTriMeshDataBuildSimple(dTriMeshDataID g,
97 const dReal* Vertices,
int VertexCount,
98 const dTriIndex* Indices,
int IndexCount);
100 ODE_API
void dGeomTriMeshDataBuildSimple1(dTriMeshDataID g,
101 const dReal* Vertices,
int VertexCount,
102 const dTriIndex* Indices,
int IndexCount,
106 ODE_API
void dGeomTriMeshDataPreprocess(dTriMeshDataID g);
108 ODE_API
void dGeomTriMeshDataGetBuffer(dTriMeshDataID g,
unsigned char** buf,
int* bufLen);
109 ODE_API
void dGeomTriMeshDataSetBuffer(dTriMeshDataID g,
unsigned char* buf);
116 typedef int dTriCallback(dGeomID TriMesh, dGeomID RefObject,
int TriangleIndex);
117 ODE_API
void dGeomTriMeshSetCallback(dGeomID g, dTriCallback* Callback);
118 ODE_API dTriCallback* dGeomTriMeshGetCallback(dGeomID g);
124 typedef void dTriArrayCallback(dGeomID TriMesh, dGeomID RefObject,
const int* TriIndices,
int TriCount);
125 ODE_API
void dGeomTriMeshSetArrayCallback(dGeomID g, dTriArrayCallback* ArrayCallback);
126 ODE_API dTriArrayCallback* dGeomTriMeshGetArrayCallback(dGeomID g);
134 typedef int dTriRayCallback(dGeomID TriMesh, dGeomID Ray,
int TriangleIndex, dReal u, dReal v);
135 ODE_API
void dGeomTriMeshSetRayCallback(dGeomID g, dTriRayCallback* Callback);
136 ODE_API dTriRayCallback* dGeomTriMeshGetRayCallback(dGeomID g);
145 typedef int dTriTriMergeCallback(dGeomID TriMesh,
int FirstTriangleIndex,
int SecondTriangleIndex);
146 ODE_API
void dGeomTriMeshSetTriMergeCallback(dGeomID g, dTriTriMergeCallback* Callback);
147 ODE_API dTriTriMergeCallback* dGeomTriMeshGetTriMergeCallback(dGeomID g);
153 ODE_API dGeomID dCreateTriMesh(dSpaceID space, dTriMeshDataID Data, dTriCallback* Callback, dTriArrayCallback* ArrayCallback, dTriRayCallback* RayCallback);
155 ODE_API
void dGeomTriMeshSetData(dGeomID g, dTriMeshDataID Data);
156 ODE_API dTriMeshDataID dGeomTriMeshGetData(dGeomID g);
160 ODE_API
void dGeomTriMeshEnableTC(dGeomID g,
int geomClass,
int enable);
161 ODE_API
int dGeomTriMeshIsTCEnabled(dGeomID g,
int geomClass);
169 ODE_API
void dGeomTriMeshClearTCCache(dGeomID g);
175 ODE_API dTriMeshDataID dGeomTriMeshGetTriMeshDataID(dGeomID g);
180 ODE_API
void dGeomTriMeshGetTriangle(dGeomID g,
int Index, dVector3* v0, dVector3* v1, dVector3* v2);
186 ODE_API
void dGeomTriMeshGetPoint(dGeomID g,
int Index, dReal u, dReal v, dVector3 Out);
207 ODE_API
int dGeomTriMeshGetTriangleCount (dGeomID g);
209 ODE_API
void dGeomTriMeshDataUpdate(dTriMeshDataID g);