Blender V2.61 - r43446
|
00001 /* 00002 Bullet Continuous Collision Detection and Physics Library 00003 Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ 00004 00005 This software is provided 'as-is', without any express or implied warranty. 00006 In no event will the authors be held liable for any damages arising from the use of this software. 00007 Permission is granted to anyone to use this software for any purpose, 00008 including commercial applications, and to alter it and redistribute it freely, 00009 subject to the following restrictions: 00010 00011 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 00012 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 00013 3. This notice may not be removed or altered from any source distribution. 00014 */ 00015 00020 #ifndef __PHY_DYNAMIC_TYPES 00021 #define __PHY_DYNAMIC_TYPES 00022 00023 00024 00025 struct KX_ClientObjectInfo; 00026 class PHY_Shape; 00027 00028 struct PHY__Vector2 00029 { 00030 float m_vec[2]; 00031 00032 operator const float* () const 00033 { 00034 return &m_vec[0]; 00035 } 00036 operator float* () 00037 { 00038 return &m_vec[0]; 00039 } 00040 }; 00041 00042 struct PHY__Vector3 00043 { 00044 float m_vec[4]; 00045 00046 operator const float* () const 00047 { 00048 return &m_vec[0]; 00049 } 00050 operator float* () 00051 { 00052 return &m_vec[0]; 00053 } 00054 }; 00055 00056 struct PHY__Vector4 00057 { 00058 float m_vec[4]; 00059 PHY__Vector4() {} 00060 void setValue(const float *value) 00061 { 00062 m_vec[0] = *value++; 00063 m_vec[1] = *value++; 00064 m_vec[2] = *value++; 00065 m_vec[3] = *value++; 00066 } 00067 void setValue(const double *value) 00068 { 00069 m_vec[0] = (float)(*value++); 00070 m_vec[1] = (float)(*value++); 00071 m_vec[2] = (float)(*value++); 00072 m_vec[3] = (float)(*value++); 00073 } 00074 00075 operator const float* () const 00076 { 00077 return &m_vec[0]; 00078 } 00079 operator float* () 00080 { 00081 return &m_vec[0]; 00082 } 00083 }; 00084 00085 //typedef float PHY__Vector3[4]; 00086 00087 enum 00088 { 00089 PHY_FH_RESPONSE, 00090 PHY_SENSOR_RESPONSE, /* Touch Sensors */ 00091 PHY_CAMERA_RESPONSE, /* Visibility Culling */ 00092 PHY_OBJECT_RESPONSE, /* Object Dynamic Geometry Response */ 00093 PHY_STATIC_RESPONSE, /* Static Geometry Response */ 00094 PHY_BROADPH_RESPONSE, /* broadphase Response */ 00095 00096 PHY_NUM_RESPONSE 00097 }; 00098 00099 typedef struct PHY_CollData { 00100 PHY__Vector3 m_point1; /* Point in object1 in world coordinates */ 00101 PHY__Vector3 m_point2; /* Point in object2 in world coordinates */ 00102 PHY__Vector3 m_normal; /* point2 - point1 */ 00103 } PHY_CollData; 00104 00105 00106 typedef bool (*PHY_ResponseCallback)(void *client_data, 00107 void *client_object1, 00108 void *client_object2, 00109 const PHY_CollData *coll_data); 00110 typedef void (*PHY_CullingCallback)(KX_ClientObjectInfo* info, void* param); 00111 00112 00115 00116 typedef enum PHY_PhysicsType { 00117 PHY_CONVEX_RIGIDBODY=16386, 00118 PHY_CONCAVE_RIGIDBODY=16399, 00119 PHY_CONVEX_FIXEDBODY=16388,//'collision object' 00120 PHY_CONCAVE_FIXEDBODY=16401, 00121 PHY_CONVEX_KINEMATICBODY=16387,// 00122 PHY_CONCAVE_KINEMATICBODY=16400, 00123 PHY_CONVEX_PHANTOMBODY=16398, 00124 PHY_CONCAVE_PHANTOMBODY=16402 00125 } PHY_PhysicsType; 00126 00128 typedef enum PHY_ConstraintType { 00129 PHY_POINT2POINT_CONSTRAINT=1, 00130 PHY_LINEHINGE_CONSTRAINT=2, 00131 PHY_ANGULAR_CONSTRAINT = 3,//hinge without ball socket 00132 PHY_CONE_TWIST_CONSTRAINT = 4, 00133 PHY_VEHICLE_CONSTRAINT=11,//complex 'constraint' that turns a rigidbody into a vehicle 00134 PHY_GENERIC_6DOF_CONSTRAINT=12,//can leave any of the 6 degree of freedom 'free' or 'locked' 00135 00136 } PHY_ConstraintType; 00137 00138 typedef enum PHY_ShapeType { 00139 PHY_SHAPE_NONE, 00140 PHY_SHAPE_BOX, 00141 PHY_SHAPE_SPHERE, 00142 PHY_SHAPE_CYLINDER, 00143 PHY_SHAPE_CONE, 00144 PHY_SHAPE_CAPSULE, 00145 PHY_SHAPE_MESH, 00146 PHY_SHAPE_POLYTOPE, 00147 PHY_SHAPE_COMPOUND, 00148 PHY_SHAPE_PROXY 00149 } PHY_ShapeType; 00150 00151 00152 typedef float PHY_Vector3[3]; 00153 00154 #endif //__PHY_DYNAMIC_TYPES