Changeset 3349
- Timestamp:
- 02/01/10 14:17:05 (6 weeks ago)
- Location:
- plugins/branches/0185_GEN_PHYSICS_REFACTOR_2
- Files:
-
- 5 modified
-
ZBullet/src/CollisionShape.hpp (modified) (1 diff)
-
ZBullet/src/PhysicsActor.cpp (modified) (6 diffs)
-
ZBullet/src/PhysicsActor.hpp (modified) (5 diffs)
-
ZNewton/src/PhysicsActor.cpp (modified) (1 diff)
-
ZNewton/src/PhysicsActor.hpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
plugins/branches/0185_GEN_PHYSICS_REFACTOR_2/ZBullet/src/CollisionShape.hpp
r3294 r3349 78 78 /// @{ 79 79 private: 80 static void TransformCallback(const btRigidBody* _body, const Zen::Math::Real* _matrix);81 80 static void ApplyForceAndTorqueCallback(const btRigidBody* _pBody); 82 81 static void ActivationStateCallback(const btRigidBody* body, unsigned state); -
plugins/branches/0185_GEN_PHYSICS_REFACTOR_2/ZBullet/src/PhysicsActor.cpp
r3347 r3349 58 58 59 59 m_name = ""; 60 m_MotionState = NULL; 60 61 } 61 62 … … 63 64 PhysicsActor::~PhysicsActor() 64 65 { 65 //NewtonDestroyBody(dynamic_cast<PhysicsZone*>(m_pZone.get())->getZonePtr(), m_pActor);66 if (m_MotionState != NULL) delete m_MotionState; 66 67 } 67 68 … … 131 132 132 133 // set the transform call back function 133 btRigidBodySetTransformCallback(m_pActor, TransformCallback);134 134 m_MotionState = new PhysicsActor::ZenMotionState(this); 135 135 136 m_pActor->setUserPointer(this); 136 137 … … 423 424 424 425 //-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 425 // set the transformation of a rigid body 426 void 427 PhysicsActor::TransformCallback(const btRigidBody* _body, const Zen::Math::Real* _matrix) 428 { 429 void* pBody = _body->getUserPointer(); 430 if (pBody != NULL) 426 void 427 PhysicsActor::ZenMotionState::getWorldTransform(btTransform& _worldTrans) const 428 { 429 430 } 431 432 //-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 433 void 434 PhysicsActor::ZenMotionState::setWorldTransform(const btTransform& _worldTrans) 435 { 436 if (m_userPointer == NULL) return; 437 PhysicsActor* pShape = static_cast<PhysicsActor*>(m_userPointer); 438 439 // Only use the transform callback if the state is active 440 if (pShape->getActivationState() == 1) 431 441 { 432 PhysicsActor* pShape = static_cast<PhysicsActor*>(pBody); 433 434 // Only use the transform callback if the state is active 435 if (pShape->m_activationState != 0) 436 { 437 Math::Matrix4 transform; 438 for(int x = 0; x < 16; x++) 439 { 440 transform.m_array[x] = _matrix[x]; 441 } 442 TransformEventData evenData(*pShape, transform); 443 pShape->onTransformEvent(evenData); 444 } 442 Math::Matrix4 transform; 443 _worldTrans.getOpenGLMatrix(transform.m_array); 444 TransformEventData evenData(*pShape, transform); 445 pShape->onTransformEvent(evenData); 445 446 } 446 447 } … … 472 473 return m_otherActor; 473 474 } 474 //-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 475 void 476 PhysicsActor::ZenMotionState::setWorldTransform(const btTransform &_worldTrans) 477 { 478 479 } 475 480 476 //-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 481 477 Scripting::I_ObjectReference* … … 532 528 533 529 //-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 530 int 531 PhysicsActor::getActivationState() 532 { 533 m_activationState = m_pActor->getActivationState(); 534 return m_activationState; 535 } 536 537 //-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 534 538 } // namespace ZBullet 535 539 } // namespace Zen -
plugins/branches/0185_GEN_PHYSICS_REFACTOR_2/ZBullet/src/PhysicsActor.hpp
r3347 r3349 95 95 virtual void setSleepingThresholds(float _minLinearMotion, float _minAngularMotion); 96 96 virtual void setActivationState(unsigned _state); 97 virtual int getActivationState(); 97 98 98 99 virtual void setAdvancedCollisionPrediction(bool _mode); … … 114 115 /// @{ 115 116 private: 116 static void TransformCallback(const btRigidBody* _body, const Zen::Math::Real* _matrix);117 117 void applyForce(const Math::Vector3& _force); 118 118 void applyImpulse(const Math::Vector3& _force, const Math::Vector3& _worldPos); … … 360 360 { 361 361 public: 362 ZenMotionState( );362 ZenMotionState(void* _userData); 363 363 virtual ~ZenMotionState(); 364 364 virtual void getWorldTransform(btTransform& _worldTrans) const; 365 365 //Bullet only calls the update of worldtransform for active objects 366 366 virtual void setWorldTransform(const btTransform& _worldTrans); 367 void* m_userPointer; 367 368 }; 368 369 /// @name Extended Member Variables … … 382 383 //-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 383 384 inline 384 PhysicsActor::ZenMotionState::ZenMotionState() 385 PhysicsActor::ZenMotionState::ZenMotionState(void* _userData) 386 : m_userPointer(_userData) 385 387 { 386 388 … … 392 394 393 395 } 396 394 397 //-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 395 398 inline -
plugins/branches/0185_GEN_PHYSICS_REFACTOR_2/ZNewton/src/PhysicsActor.cpp
r3347 r3349 643 643 644 644 //-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 645 int 646 PhysicsActor::getActivationState() 647 { 648 m_activationState = NewtonBodyGetSleepingState(m_pActor); 649 return m_activationState; 650 } 651 652 653 //-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 645 654 } // namespace ZNewton 646 655 } // namespace Zen -
plugins/branches/0185_GEN_PHYSICS_REFACTOR_2/ZNewton/src/PhysicsActor.hpp
r3347 r3349 93 93 virtual void setSleepingThresholds(float _minLinearMotion, float _minAngularMotion); 94 94 void setActivationState(unsigned _state); 95 virtual int getActivationState(); 95 96 96 97 virtual void setAdvancedCollisionPrediction(bool _mode);
