16 #ifndef BT_COLLISION_OBJECT_H
17 #define BT_COLLISION_OBJECT_H
23 #define ISLAND_SLEEPING 2
24 #define WANTS_DEACTIVATION 3
25 #define DISABLE_DEACTIVATION 4
26 #define DISABLE_SIMULATION 5
37 #ifdef BT_USE_DOUBLE_PRECISION
38 #define btCollisionObjectData btCollisionObjectDoubleData
39 #define btCollisionObjectDataName "btCollisionObjectDoubleData"
41 #define btCollisionObjectData btCollisionObjectFloatData
42 #define btCollisionObjectDataName "btCollisionObjectFloatData"
128 CF_KINEMATIC_OBJECT= 2,
129 CF_NO_CONTACT_RESPONSE = 4,
130 CF_CUSTOM_MATERIAL_CALLBACK = 8,
131 CF_CHARACTER_OBJECT = 16,
132 CF_DISABLE_VISUALIZE_OBJECT = 32,
133 CF_DISABLE_SPU_COLLISION_PROCESSING = 64
138 CO_COLLISION_OBJECT =1,
146 CO_FEATHERSTONE_LINK=64
151 CF_ANISOTROPIC_FRICTION_DISABLED=0,
152 CF_ANISOTROPIC_FRICTION = 1,
153 CF_ANISOTROPIC_ROLLING_FRICTION = 2
159 return ((m_collisionFlags & (CF_STATIC_OBJECT | CF_KINEMATIC_OBJECT | CF_NO_CONTACT_RESPONSE) )==0);
164 return m_anisotropicFriction;
166 void setAnisotropicFriction(
const btVector3& anisotropicFriction,
int frictionMode = CF_ANISOTROPIC_FRICTION)
168 m_anisotropicFriction = anisotropicFriction;
169 bool isUnity = (anisotropicFriction[0]!=1.f) || (anisotropicFriction[1]!=1.f) || (anisotropicFriction[2]!=1.f);
170 m_hasAnisotropicFriction = isUnity?frictionMode : 0;
172 bool hasAnisotropicFriction(
int frictionMode = CF_ANISOTROPIC_FRICTION)
const
174 return (m_hasAnisotropicFriction&frictionMode)!=0;
179 void setContactProcessingThreshold(
btScalar contactProcessingThreshold)
181 m_contactProcessingThreshold = contactProcessingThreshold;
185 return m_contactProcessingThreshold;
189 return (m_collisionFlags & CF_STATIC_OBJECT) != 0;
194 return (m_collisionFlags & CF_KINEMATIC_OBJECT) != 0;
199 return (m_collisionFlags & (CF_KINEMATIC_OBJECT | CF_STATIC_OBJECT)) != 0 ;
203 return (m_collisionFlags & CF_NO_CONTACT_RESPONSE)==0;
214 m_collisionShape = collisionShape;
215 m_rootCollisionShape = collisionShape;
220 return m_collisionShape;
225 return m_collisionShape;
234 void* internalGetExtensionPointer()
const
236 return m_extensionPointer;
240 void internalSetExtensionPointer(
void* pointer)
242 m_extensionPointer = pointer;
247 void setActivationState(
int newState)
const;
251 m_deactivationTime = time;
255 return m_deactivationTime;
258 void forceActivationState(
int newState)
const;
260 void activate(
bool forceActivation =
false)
const;
270 m_restitution = rest;
274 return m_restitution;
289 m_rollingFriction = frict;
293 return m_rollingFriction;
298 int getInternalType()
const
300 return m_internalType;
305 return m_worldTransform;
310 return m_worldTransform;
316 m_worldTransform = worldTrans;
322 return m_broadphaseHandle;
327 return m_broadphaseHandle;
332 m_broadphaseHandle = handle;
338 return m_interpolationWorldTransform;
343 return m_interpolationWorldTransform;
349 m_interpolationWorldTransform = trans;
352 void setInterpolationLinearVelocity(
const btVector3& linvel)
355 m_interpolationLinearVelocity = linvel;
358 void setInterpolationAngularVelocity(
const btVector3& angvel)
361 m_interpolationAngularVelocity = angvel;
366 return m_interpolationLinearVelocity;
369 const btVector3& getInterpolationAngularVelocity()
const
371 return m_interpolationAngularVelocity;
379 void setIslandTag(
int tag)
386 return m_companionId;
389 void setCompanionId(
int id)
396 return m_hitFraction;
401 m_hitFraction = hitFraction;
407 return m_collisionFlags;
410 void setCollisionFlags(
int flags)
412 m_collisionFlags = flags;
418 return m_ccdSweptSphereRadius;
424 m_ccdSweptSphereRadius = radius;
429 return m_ccdMotionThreshold;
434 return m_ccdMotionThreshold*m_ccdMotionThreshold;
440 void setCcdMotionThreshold(
btScalar ccdMotionThreshold)
442 m_ccdMotionThreshold = ccdMotionThreshold;
446 void* getUserPointer()
const
448 return m_userObjectPointer;
451 int getUserIndex()
const
456 void setUserPointer(
void* userPointer)
458 m_userObjectPointer = userPointer;
462 void setUserIndex(
int index)
467 int getUpdateRevisionInternal()
const
469 return m_updateRevision;
475 if (m_checkCollideWith)
476 return checkCollideWithOverride(co);
481 virtual int calculateSerializeBufferSize()
const;
484 virtual const char* serialize(
void* dataBuffer,
class btSerializer* serializer)
const;
486 virtual void serializeSingleObject(
class btSerializer* serializer)
const;
565 #endif //BT_COLLISION_OBJECT_H