Changeset 7983 for code/branches/kicklib/src/external/bullet/BulletDynamics/Dynamics/btRigidBody.cpp
- Timestamp:
- Feb 27, 2011, 7:43:24 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/kicklib/src/external/bullet/BulletDynamics/Dynamics/btRigidBody.cpp
r5781 r7983 20 20 #include "LinearMath/btMotionState.h" 21 21 #include "BulletDynamics/ConstraintSolver/btTypedConstraint.h" 22 #include "LinearMath/btSerializer.h" 22 23 23 24 //'temporarily' global variables … … 45 46 m_linearVelocity.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); 46 47 m_angularVelocity.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); 47 m_angularFactor = btScalar(1.); 48 m_angularFactor.setValue(1,1,1); 49 m_linearFactor.setValue(1,1,1); 48 50 m_gravity.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); 49 51 m_gravity_acceleration.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); … … 86 88 updateInertiaTensor(); 87 89 90 m_rigidbodyFlags = 0; 91 92 93 m_deltaLinearVelocity.setZero(); 94 m_deltaAngularVelocity.setZero(); 95 m_invMass = m_inverseMass*m_linearFactor; 96 m_pushVelocity.setZero(); 97 m_turnVelocity.setZero(); 98 99 100 88 101 } 89 102 … … 136 149 void btRigidBody::setDamping(btScalar lin_damping, btScalar ang_damping) 137 150 { 138 m_linearDamping = GEN_clamped(lin_damping, (btScalar)btScalar(0.0), (btScalar)btScalar(1.0));139 m_angularDamping = GEN_clamped(ang_damping, (btScalar)btScalar(0.0), (btScalar)btScalar(1.0));151 m_linearDamping = btClamped(lin_damping, (btScalar)btScalar(0.0), (btScalar)btScalar(1.0)); 152 m_angularDamping = btClamped(ang_damping, (btScalar)btScalar(0.0), (btScalar)btScalar(1.0)); 140 153 } 141 154 … … 227 240 m_inverseMass = btScalar(1.0) / mass; 228 241 } 242 243 //Fg = m * a 244 m_gravity = mass * m_gravity_acceleration; 229 245 230 246 m_invInertiaLocal.setValue(inertia.x() != btScalar(0.0) ? btScalar(1.0) / inertia.x(): btScalar(0.0), … … 232 248 inertia.z() != btScalar(0.0) ? btScalar(1.0) / inertia.z(): btScalar(0.0)); 233 249 250 m_invMass = m_linearFactor*m_inverseMass; 234 251 } 235 252 … … 301 318 } 302 319 320 void btRigidBody::internalWritebackVelocity(btScalar timeStep) 321 { 322 (void) timeStep; 323 if (m_inverseMass) 324 { 325 setLinearVelocity(getLinearVelocity()+ m_deltaLinearVelocity); 326 setAngularVelocity(getAngularVelocity()+m_deltaAngularVelocity); 327 328 //correct the position/orientation based on push/turn recovery 329 btTransform newTransform; 330 btTransformUtil::integrateTransform(getWorldTransform(),m_pushVelocity,m_turnVelocity,timeStep,newTransform); 331 setWorldTransform(newTransform); 332 //m_originalBody->setCompanionId(-1); 333 } 334 // m_deltaLinearVelocity.setZero(); 335 // m_deltaAngularVelocity .setZero(); 336 // m_pushVelocity.setZero(); 337 // m_turnVelocity.setZero(); 338 } 339 340 341 303 342 void btRigidBody::addConstraintRef(btTypedConstraint* c) 304 343 { … … 315 354 m_checkCollideWith = m_constraintRefs.size() > 0; 316 355 } 356 357 int btRigidBody::calculateSerializeBufferSize() const 358 { 359 int sz = sizeof(btRigidBodyData); 360 return sz; 361 } 362 363 ///fills the dataBuffer and returns the struct name (and 0 on failure) 364 const char* btRigidBody::serialize(void* dataBuffer, class btSerializer* serializer) const 365 { 366 btRigidBodyData* rbd = (btRigidBodyData*) dataBuffer; 367 368 btCollisionObject::serialize(&rbd->m_collisionObjectData, serializer); 369 370 m_invInertiaTensorWorld.serialize(rbd->m_invInertiaTensorWorld); 371 m_linearVelocity.serialize(rbd->m_linearVelocity); 372 m_angularVelocity.serialize(rbd->m_angularVelocity); 373 rbd->m_inverseMass = m_inverseMass; 374 m_angularFactor.serialize(rbd->m_angularFactor); 375 m_linearFactor.serialize(rbd->m_linearFactor); 376 m_gravity.serialize(rbd->m_gravity); 377 m_gravity_acceleration.serialize(rbd->m_gravity_acceleration); 378 m_invInertiaLocal.serialize(rbd->m_invInertiaLocal); 379 m_totalForce.serialize(rbd->m_totalForce); 380 m_totalTorque.serialize(rbd->m_totalTorque); 381 rbd->m_linearDamping = m_linearDamping; 382 rbd->m_angularDamping = m_angularDamping; 383 rbd->m_additionalDamping = m_additionalDamping; 384 rbd->m_additionalDampingFactor = m_additionalDampingFactor; 385 rbd->m_additionalLinearDampingThresholdSqr = m_additionalLinearDampingThresholdSqr; 386 rbd->m_additionalAngularDampingThresholdSqr = m_additionalAngularDampingThresholdSqr; 387 rbd->m_additionalAngularDampingFactor = m_additionalAngularDampingFactor; 388 rbd->m_linearSleepingThreshold=m_linearSleepingThreshold; 389 rbd->m_angularSleepingThreshold = m_angularSleepingThreshold; 390 391 return btRigidBodyDataName; 392 } 393 394 395 396 void btRigidBody::serializeSingleObject(class btSerializer* serializer) const 397 { 398 btChunk* chunk = serializer->allocate(calculateSerializeBufferSize(),1); 399 const char* structType = serialize(chunk->m_oldPtr, serializer); 400 serializer->finalizeChunk(chunk,structType,BT_RIGIDBODY_CODE,(void*)this); 401 } 402 403
Note: See TracChangeset
for help on using the changeset viewer.