diff options
author | Kester Maddock <Christopher.Maddock.1@uni.massey.ac.nz> | 2004-04-08 15:34:50 +0400 |
---|---|---|
committer | Kester Maddock <Christopher.Maddock.1@uni.massey.ac.nz> | 2004-04-08 15:34:50 +0400 |
commit | 5398f1ba77d25ff27a4e8275a1453e7ddb2f2f0d (patch) | |
tree | 7407e63eceef245cc430c344a1f1a7e543a68667 /source/gameengine/Physics/Sumo | |
parent | fc080d30d6134becd0792e2236e33ff98e5b7e9b (diff) |
Added resolveCombinedVelocities()
Fixed drot actuator. The rotation matrix was being mutilated by passing a float[9] instead of float[12].
Diffstat (limited to 'source/gameengine/Physics/Sumo')
5 files changed, 26 insertions, 10 deletions
diff --git a/source/gameengine/Physics/Sumo/Fuzzics/include/SM_Object.h b/source/gameengine/Physics/Sumo/Fuzzics/include/SM_Object.h index aec4a410e1f..de9d2e20044 100644 --- a/source/gameengine/Physics/Sumo/Fuzzics/include/SM_Object.h +++ b/source/gameengine/Physics/Sumo/Fuzzics/include/SM_Object.h @@ -267,7 +267,7 @@ private: actualAngVelocity( ) const ; - bool dynamicCollision(const MT_Point3 &local2, + void dynamicCollision(const MT_Point3 &local2, const MT_Vector3 &normal, MT_Scalar dist, const MT_Vector3 &rel_vel, diff --git a/source/gameengine/Physics/Sumo/Fuzzics/src/SM_Object.cpp b/source/gameengine/Physics/Sumo/Fuzzics/src/SM_Object.cpp index cdf1a77adb3..ee8a7da953c 100644 --- a/source/gameengine/Physics/Sumo/Fuzzics/src/SM_Object.cpp +++ b/source/gameengine/Physics/Sumo/Fuzzics/src/SM_Object.cpp @@ -160,7 +160,7 @@ integrateMomentum( } } -bool SM_Object::dynamicCollision(const MT_Point3 &local2, +void SM_Object::dynamicCollision(const MT_Point3 &local2, const MT_Vector3 &normal, MT_Scalar dist, const MT_Vector3 &rel_vel, @@ -297,7 +297,6 @@ bool SM_Object::dynamicCollision(const MT_Point3 &local2, notifyClient(); } - return false; } DT_Bool SM_Object::boing( diff --git a/source/gameengine/Physics/Sumo/Fuzzics/src/SM_Scene.cpp b/source/gameengine/Physics/Sumo/Fuzzics/src/SM_Scene.cpp index 0171d5f265e..38c2b48e460 100644 --- a/source/gameengine/Physics/Sumo/Fuzzics/src/SM_Scene.cpp +++ b/source/gameengine/Physics/Sumo/Fuzzics/src/SM_Scene.cpp @@ -303,8 +303,13 @@ DT_Bool SM_Scene::boing( SM_Scene::~SM_Scene() { -/* if (m_objectList.begin() != m_objectList.end()) - std::cout << "SM_Scene::~SM_Scene: There are still objects in the Sumo scene!" << std::endl; */ +// if (m_objectList.begin() != m_objectList.end()) +// std::cout << "SM_Scene::~SM_Scene: There are still objects in the Sumo scene!" << std::endl; + for (T_ObjectList::iterator it = m_objectList.begin() ; it != m_objectList.end() ; it++) + delete *it; + DT_DestroyRespTable(m_respTable); + DT_DestroyRespTable(m_secondaryRespTable); + DT_DestroyRespTable(m_fixRespTable); DT_DestroyScene(m_scene); } diff --git a/source/gameengine/Physics/Sumo/SumoPhysicsController.cpp b/source/gameengine/Physics/Sumo/SumoPhysicsController.cpp index 76f5f6e891d..c08c20cf9b9 100644 --- a/source/gameengine/Physics/Sumo/SumoPhysicsController.cpp +++ b/source/gameengine/Physics/Sumo/SumoPhysicsController.cpp @@ -169,7 +169,7 @@ void SumoPhysicsController::RelativeTranslate(float dlocX,float dlocY,float dlo } } -void SumoPhysicsController::RelativeRotate(const float drot[9],bool local) +void SumoPhysicsController::RelativeRotate(const float drot[12],bool local) { if (m_sumoObj ) @@ -185,9 +185,10 @@ void SumoPhysicsController::RelativeRotate(const float drot[9],bool local) } void SumoPhysicsController::setOrientation(float quatImag0,float quatImag1,float quatImag2,float quatReal) { - float orn [4]={quatImag0,quatImag1,quatImag2,quatReal}; - MT_Quaternion quat(orn); - m_sumoObj->setOrientation(orn); +// float orn [4]={quatImag0,quatImag1,quatImag2,quatReal}; +// MT_Quaternion quat; + m_sumoObj->setOrientation(MT_Quaternion(quatImag0,quatImag1,quatImag2,quatReal)); + } void SumoPhysicsController::getOrientation(float &quatImag0,float &quatImag1,float &quatImag2,float &quatReal) @@ -271,6 +272,16 @@ void SumoPhysicsController::SetLinearVelocity(float lin_velX,float lin_velY,flo } } +void SumoPhysicsController::resolveCombinedVelocities( + const MT_Vector3 & lin_vel, + const MT_Vector3 & ang_vel + ) +{ + if (m_sumoObj) + m_sumoObj->resolveCombinedVelocities(lin_vel, ang_vel); +} + + void SumoPhysicsController::applyImpulse(float attachX,float attachY,float attachZ, float impulseX,float impulseY,float impulseZ) { if (m_sumoObj) diff --git a/source/gameengine/Physics/Sumo/SumoPhysicsController.h b/source/gameengine/Physics/Sumo/SumoPhysicsController.h index 4dd12b8b291..e1ce205b667 100644 --- a/source/gameengine/Physics/Sumo/SumoPhysicsController.h +++ b/source/gameengine/Physics/Sumo/SumoPhysicsController.h @@ -61,7 +61,7 @@ public: // kinematic methods virtual void RelativeTranslate(float dlocX,float dlocY,float dlocZ,bool local); - virtual void RelativeRotate(const float drot[9],bool local); + virtual void RelativeRotate(const float drot[12],bool local); virtual void getOrientation(float &quatImag0,float &quatImag1,float &quatImag2,float &quatReal); virtual void setOrientation(float quatImag0,float quatImag1,float quatImag2,float quatReal); virtual void setPosition(float posX,float posY,float posZ); @@ -72,6 +72,7 @@ public: virtual void ApplyForce(float forceX,float forceY,float forceZ,bool local); virtual void SetAngularVelocity(float ang_velX,float ang_velY,float ang_velZ,bool local); virtual void SetLinearVelocity(float lin_velX,float lin_velY,float lin_velZ,bool local); + virtual void resolveCombinedVelocities(const MT_Vector3 & lin_vel, const MT_Vector3 & ang_vel ); virtual void applyImpulse(float attachX,float attachY,float attachZ, float impulseX,float impulseY,float impulseZ); virtual void SetActive(bool active){}; virtual void SuspendDynamics(); |