#ifndef __ODEOBJECTLIST_H #define __ODEOBJECTLIST_H struct OdeObjectList { private: struct Box { float *pos; float *R; float *size; }; struct Sphere { float *pos; float *R; float radius; }; struct Triangle { float *pos; float *R; float *v0; float *v1; float *v2; int solid; }; struct Cylinder { float *pos; float *R; float length; float radius; }; struct Capsule { float *pos; float *R; float length; float radius; }; struct Line { float *pos1; float *pos2; }; struct Convex { float *pos; float *R; float *planes; unsigned planecount; float *points; unsigned int pointcount; unsigned *polygons; }; struct BoxD { double *pos; double *R; double *size; }; struct SphereD { double *pos; double *R; float radius; }; struct TriangleD { double *pos; double *R; double *v0; double *v1; double *v2; int solid; }; struct CylinderD { double *pos; double *R; float length; float radius; }; struct CapsuleD { double *pos; double *R; float length; float radius; }; struct LineD { double *pos1; double *pos2; }; struct ConvexD { double *pos; double *R; double *planes; unsigned planecount; double *points; unsigned int pointcount; unsigned *polygons; }; int obj_kind; public: enum { L_BOX = 0, L_SPHERE = 1, L_TRIANGEL = 2, L_CYLINDER = 3, L_CAPSULE = 4, L_LINE = 5, L_CONVEX = 6, L_BOXD = 256, L_SPHERED = 257, L_TRIANGELD = 258, L_CYLINDERD = 259, L_CAPSULED = 260, L_LINED = 261, L_CONVEXD = 262 }; union { Box box; Sphere sphere; Triangle triangle; Cylinder cylinder; Capsule capsule; Line line; Convex convex; BoxD boxD; SphereD sphereD; TriangleD triangleD; CylinderD cylinderD; CapsuleD capsuleD; LineD lineD; ConvexD convexD; }; void setKind( const int _kind ) { obj_kind = _kind; } int getKind() const { return obj_kind; }; }; #endif /* __ODEOBJECTLIST_H */