Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-04-08 15:34:50 +0400
committerKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-04-08 15:34:50 +0400
commit5398f1ba77d25ff27a4e8275a1453e7ddb2f2f0d (patch)
tree7407e63eceef245cc430c344a1f1a7e543a68667 /source/gameengine/Physics
parentfc080d30d6134becd0792e2236e33ff98e5b7e9b (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')
-rw-r--r--source/gameengine/Physics/Sumo/Fuzzics/include/SM_Object.h2
-rw-r--r--source/gameengine/Physics/Sumo/Fuzzics/src/SM_Object.cpp3
-rw-r--r--source/gameengine/Physics/Sumo/Fuzzics/src/SM_Scene.cpp9
-rw-r--r--source/gameengine/Physics/Sumo/SumoPhysicsController.cpp19
-rw-r--r--source/gameengine/Physics/Sumo/SumoPhysicsController.h3
-rw-r--r--source/gameengine/Physics/common/PHY_IPhysicsController.h3
-rwxr-xr-xsource/gameengine/Physics/common/SConscript3
7 files changed, 31 insertions, 11 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();
diff --git a/source/gameengine/Physics/common/PHY_IPhysicsController.h b/source/gameengine/Physics/common/PHY_IPhysicsController.h
index 69dbd6bfa60..8c94083af83 100644
--- a/source/gameengine/Physics/common/PHY_IPhysicsController.h
+++ b/source/gameengine/Physics/common/PHY_IPhysicsController.h
@@ -32,6 +32,8 @@
#ifndef PHY_IPHYSICSCONTROLLER_H
#define PHY_IPHYSICSCONTROLLER_H
+#include "MT_Vector3.h"
+
/**
PHY_IPhysicsController is the abstract simplified Interface to a physical object.
It contains the IMotionState and IDeformableMesh Interfaces.
@@ -70,6 +72,7 @@ class PHY_IPhysicsController
virtual void ApplyForce(float forceX,float forceY,float forceZ,bool local)=0;
virtual void SetAngularVelocity(float ang_velX,float ang_velY,float ang_velZ,bool local)=0;
virtual void SetLinearVelocity(float lin_velX,float lin_velY,float lin_velZ,bool local)=0;
+ virtual void resolveCombinedVelocities(const MT_Vector3 & lin_vel, const MT_Vector3 & ang_vel ) = 0;
virtual void applyImpulse(float attachX,float attachY,float attachZ, float impulseX,float impulseY,float impulseZ)=0;
virtual void SetActive(bool active)=0;
diff --git a/source/gameengine/Physics/common/SConscript b/source/gameengine/Physics/common/SConscript
index 07a1cea766b..6e4989f9a66 100755
--- a/source/gameengine/Physics/common/SConscript
+++ b/source/gameengine/Physics/common/SConscript
@@ -8,7 +8,8 @@ source_files = ['PHY_IMotionState.cpp',
'PHY_IPhysicsEnvironment.cpp']
phy_physics_env.Append (CPPPATH = ['.',
- '../Dummy'
+ '../Dummy',
+ '#intern/moto/include'
])
phy_physics_env.Library (target='#'+user_options_dict['BUILD_DIR']+'/lib/PHY_Physics', source=source_files)