00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef _ODE_COLLISION_TRIMESH_H_
00035 #define _ODE_COLLISION_TRIMESH_H_
00036
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040
00041
00042
00043
00044 struct dxTriMeshData;
00045 typedef struct dxTriMeshData* dTriMeshDataID;
00046
00047
00048
00049
00050
00051 ODE_API dTriMeshDataID dGeomTriMeshDataCreate(void);
00052 ODE_API void dGeomTriMeshDataDestroy(dTriMeshDataID g);
00053
00054 enum { TRIMESH_FACE_NORMALS, TRIMESH_LAST_TRANSFORMATION };
00055 ODE_API void dGeomTriMeshDataSet(dTriMeshDataID g, int data_id, void* in_data);
00056 ODE_API void* dGeomTriMeshDataGet(dTriMeshDataID g, int data_id);
00057
00058
00059
00060
00061 ODE_API void dGeomTriMeshDataBuildSingle(dTriMeshDataID g,
00062 const void* Vertices, int VertexStride, int VertexCount,
00063 const void* Indices, int IndexCount, int TriStride);
00064
00065 ODE_API void dGeomTriMeshDataBuildSingle1(dTriMeshDataID g,
00066 const void* Vertices, int VertexStride, int VertexCount,
00067 const void* Indices, int IndexCount, int TriStride,
00068 const void* Normals);
00069
00070
00071
00072 ODE_API void dGeomTriMeshDataBuildDouble(dTriMeshDataID g,
00073 const void* Vertices, int VertexStride, int VertexCount,
00074 const void* Indices, int IndexCount, int TriStride);
00075
00076 ODE_API void dGeomTriMeshDataBuildDouble1(dTriMeshDataID g,
00077 const void* Vertices, int VertexStride, int VertexCount,
00078 const void* Indices, int IndexCount, int TriStride,
00079 const void* Normals);
00080
00081
00082
00083
00084 ODE_API void dGeomTriMeshDataBuildSimple(dTriMeshDataID g,
00085 const dReal* Vertices, int VertexCount,
00086 const int* Indices, int IndexCount);
00087
00088 ODE_API void dGeomTriMeshDataBuildSimple1(dTriMeshDataID g,
00089 const dReal* Vertices, int VertexCount,
00090 const int* Indices, int IndexCount,
00091 const int* Normals);
00092
00093
00094 ODE_API void dGeomTriMeshDataPreprocess(dTriMeshDataID g);
00095
00096 ODE_API void dGeomTriMeshDataGetBuffer(dTriMeshDataID g, unsigned char** buf, int* bufLen);
00097 ODE_API void dGeomTriMeshDataSetBuffer(dTriMeshDataID g, unsigned char* buf);
00098
00099
00100
00101
00102
00103
00104 typedef int dTriCallback(dGeomID TriMesh, dGeomID RefObject, int TriangleIndex);
00105 ODE_API void dGeomTriMeshSetCallback(dGeomID g, dTriCallback* Callback);
00106 ODE_API dTriCallback* dGeomTriMeshGetCallback(dGeomID g);
00107
00108
00109
00110
00111
00112 typedef void dTriArrayCallback(dGeomID TriMesh, dGeomID RefObject, const int* TriIndices, int TriCount);
00113 ODE_API void dGeomTriMeshSetArrayCallback(dGeomID g, dTriArrayCallback* ArrayCallback);
00114 ODE_API dTriArrayCallback* dGeomTriMeshGetArrayCallback(dGeomID g);
00115
00116
00117
00118
00119
00120
00121
00122 typedef int dTriRayCallback(dGeomID TriMesh, dGeomID Ray, int TriangleIndex, dReal u, dReal v);
00123 ODE_API void dGeomTriMeshSetRayCallback(dGeomID g, dTriRayCallback* Callback);
00124 ODE_API dTriRayCallback* dGeomTriMeshGetRayCallback(dGeomID g);
00125
00126
00127
00128
00129
00130 ODE_API dGeomID dCreateTriMesh(dSpaceID space, dTriMeshDataID Data, dTriCallback* Callback, dTriArrayCallback* ArrayCallback, dTriRayCallback* RayCallback);
00131
00132 ODE_API void dGeomTriMeshSetData(dGeomID g, dTriMeshDataID Data);
00133 ODE_API dTriMeshDataID dGeomTriMeshGetData(dGeomID g);
00134
00135
00136
00137 ODE_API void dGeomTriMeshEnableTC(dGeomID g, int geomClass, int enable);
00138 ODE_API int dGeomTriMeshIsTCEnabled(dGeomID g, int geomClass);
00139
00140
00141
00142
00143
00144
00145
00146 ODE_API void dGeomTriMeshClearTCCache(dGeomID g);
00147
00148
00149
00150
00151
00152 ODE_API dTriMeshDataID dGeomTriMeshGetTriMeshDataID(dGeomID g);
00153
00154
00155
00156
00157 ODE_API void dGeomTriMeshGetTriangle(dGeomID g, int Index, dVector3* v0, dVector3* v1, dVector3* v2);
00158
00159
00160
00161
00162
00163 ODE_API void dGeomTriMeshGetPoint(dGeomID g, int Index, dReal u, dReal v, dVector3 Out);
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184 ODE_API int dGeomTriMeshGetTriangleCount (dGeomID g);
00185
00186 ODE_API void dGeomTriMeshDataUpdate(dTriMeshDataID g);
00187
00188 #ifdef __cplusplus
00189 }
00190 #endif
00191
00192 #endif
00193