00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _ODE_COLLISION_SPACE_H_
00024 #define _ODE_COLLISION_SPACE_H_
00025
00026 #include <ode/common.h>
00027
00028 #ifdef __cplusplus
00029 extern "C" {
00030 #endif
00031
00032 struct dContactGeom;
00033
00049 typedef void dNearCallback (void *data, dGeomID o1, dGeomID o2);
00050
00051
00052 ODE_API dSpaceID dSimpleSpaceCreate (dSpaceID space);
00053 ODE_API dSpaceID dHashSpaceCreate (dSpaceID space);
00054 ODE_API dSpaceID dQuadTreeSpaceCreate (dSpaceID space, const dVector3 Center, const dVector3 Extents, int Depth);
00055
00056
00057
00058
00059 #define dSAP_AXES_XYZ ((0)|(1<<2)|(2<<4))
00060 #define dSAP_AXES_XZY ((0)|(2<<2)|(1<<4))
00061 #define dSAP_AXES_YXZ ((1)|(0<<2)|(2<<4))
00062 #define dSAP_AXES_YZX ((1)|(2<<2)|(0<<4))
00063 #define dSAP_AXES_ZXY ((2)|(0<<2)|(1<<4))
00064 #define dSAP_AXES_ZYX ((2)|(1<<2)|(0<<4))
00065
00066 ODE_API dSpaceID dSweepAndPruneSpaceCreate( dSpaceID space, int axisorder );
00067
00068
00069
00070 ODE_API void dSpaceDestroy (dSpaceID);
00071
00072 ODE_API void dHashSpaceSetLevels (dSpaceID space, int minlevel, int maxlevel);
00073 ODE_API void dHashSpaceGetLevels (dSpaceID space, int *minlevel, int *maxlevel);
00074
00075 ODE_API void dSpaceSetCleanup (dSpaceID space, int mode);
00076 ODE_API int dSpaceGetCleanup (dSpaceID space);
00077
00100 ODE_API void dSpaceSetSublevel (dSpaceID space, int sublevel);
00101
00114 ODE_API int dSpaceGetSublevel (dSpaceID space);
00115
00116 ODE_API void dSpaceAdd (dSpaceID, dGeomID);
00117 ODE_API void dSpaceRemove (dSpaceID, dGeomID);
00118 ODE_API int dSpaceQuery (dSpaceID, dGeomID);
00119 ODE_API void dSpaceClean (dSpaceID);
00120 ODE_API int dSpaceGetNumGeoms (dSpaceID);
00121 ODE_API dGeomID dSpaceGetGeom (dSpaceID, int i);
00122
00143 ODE_API int dSpaceGetClass(dSpaceID space);
00144
00145 #ifdef __cplusplus
00146 }
00147 #endif
00148
00149 #endif