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:
authorErwin Coumans <blender@erwincoumans.com>2006-12-16 08:50:38 +0300
committerErwin Coumans <blender@erwincoumans.com>2006-12-16 08:50:38 +0300
commit92379ec21f78ba7a7f7354d3039ef300c0bb2cb4 (patch)
tree3fd43168fe1267d6d654cd5acddf812cda158c64 /source/gameengine/Physics
parent3c9a11f24ed9bd131e049e98e86aaee1bcaeb53a (diff)
contribution from RCRuiz:
drawing of rigidbody constraint pivots, and allow passing of full constraint frame.
Diffstat (limited to 'source/gameengine/Physics')
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp14
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h5
-rw-r--r--source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp6
-rw-r--r--source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h5
-rw-r--r--source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp6
-rw-r--r--source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h6
-rw-r--r--source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h5
7 files changed, 37 insertions, 10 deletions
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
index edd4c2e2bb4..57fe533825e 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
@@ -1002,7 +1002,10 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::CreateSphereController(float radi
int CcdPhysicsEnvironment::createConstraint(class PHY_IPhysicsController* ctrl0,class PHY_IPhysicsController* ctrl1,PHY_ConstraintType type,
float pivotX,float pivotY,float pivotZ,
- float axisX,float axisY,float axisZ)
+ float axisX,float axisY,float axisZ,
+ float axis1X,float axis1Y,float axis1Z,
+ float axis2X,float axis2Y,float axis2Z
+ )
{
@@ -1066,9 +1069,12 @@ int CcdPhysicsEnvironment::createConstraint(class PHY_IPhysicsController* ctrl
btTransform frameInA;
btTransform frameInB;
- btVector3 axis1, axis2;
- btPlaneSpace1( axisInA, axis1, axis2 );
-
+ btVector3 axis1(axis1X,axis1Y,axis1Z), axis2(axis2X,axis2Y,axis2Z);
+ if (axis1.length() == 0.0)
+ {
+ btPlaneSpace1( axisInA, axis1, axis2 );
+ }
+
frameInA.getBasis().setValue( axisInA.x(), axis1.x(), axis2.x(),
axisInA.y(), axis1.y(), axis2.y(),
axisInA.z(), axis1.z(), axis2.z() );
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
index 9a8fc3f435d..66a6ed59c17 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
@@ -117,7 +117,10 @@ protected:
virtual int createConstraint(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsController* ctrl2,PHY_ConstraintType type,
float pivotX,float pivotY,float pivotZ,
- float axisX,float axisY,float axisZ);
+ float axisX,float axisY,float axisZ,
+ float axis1X=0,float axis1Y=0,float axis1Z=0,
+ float axis2X=0,float axis2Y=0,float axis2Z=0
+ );
//Following the COLLADA physics specification for constraints
diff --git a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp
index 0532a9a8cf7..b40d1b430bb 100644
--- a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp
@@ -93,7 +93,11 @@ void DummyPhysicsEnvironment::setGravity(float x,float y,float z)
int DummyPhysicsEnvironment::createConstraint(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsController* ctrl2,PHY_ConstraintType type,
- float pivotX,float pivotY,float pivotZ,float axisX,float axisY,float axisZ)
+ float pivotX,float pivotY,float pivotZ,float axisX,float axisY,float axisZ,
+ float axis1X,float axis1Y,float axis1Z,
+ float axis2X,float axis2Y,float axis2Z
+
+ )
{
int constraintid = 0;
diff --git a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
index bd4e00e9fa5..4fc970da699 100644
--- a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
@@ -59,7 +59,10 @@ public:
virtual int createConstraint(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsController* ctrl2,PHY_ConstraintType type,
float pivotX,float pivotY,float pivotZ,
- float axisX,float axisY,float axisZ);
+ float axisX,float axisY,float axisZ,
+ float axis1X=0,float axis1Y=0,float axis1Z=0,
+ float axis2X=0,float axis2Y=0,float axis2Z=0
+ );
virtual void removeConstraint(int constraintid);
diff --git a/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp b/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp
index ead6dcc0106..6cdf1d41dc1 100644
--- a/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp
@@ -111,7 +111,11 @@ int SumoPhysicsEnvironment::createConstraint(
class PHY_IPhysicsController* ctrl2,
PHY_ConstraintType type,
float pivotX,float pivotY,float pivotZ,
- float axisX,float axisY,float axisZ)
+ float axisX,float axisY,float axisZ,
+ float axis1X,float axis1Y,float axis1Z,
+ float axis2X,float axis2Y,float axis2Z
+
+ )
{
int constraintid = 0;
return constraintid;
diff --git a/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h b/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h
index 1afb9433500..4d17d0c21fd 100644
--- a/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h
@@ -64,7 +64,11 @@ public:
virtual void setGravity(float x,float y,float z);
virtual int createConstraint(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsController* ctrl2,PHY_ConstraintType type,
float pivotX,float pivotY,float pivotZ,
- float axisX,float axisY,float axisZ);
+ float axisX,float axisY,float axisZ,
+ float axis1X=0,float axis1Y=0,float axis1Z=0,
+ float axis2X=0,float axis2Y=0,float axis2Z=0
+
+ );
virtual void removeConstraint(int constraintid);
diff --git a/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h b/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
index 2716baa0d6d..5e4fd681914 100644
--- a/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
+++ b/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
@@ -86,7 +86,10 @@ class PHY_IPhysicsEnvironment
virtual int createConstraint(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsController* ctrl2,PHY_ConstraintType type,
float pivotX,float pivotY,float pivotZ,
- float axisX,float axisY,float axisZ)=0;
+ float axis0X,float axis0Y,float axis0Z,
+ float axis1X=0,float axis1Y=0,float axis1Z=0,
+ float axis2X=0,float axis2Y=0,float axis2Z=0
+ )=0;
virtual void removeConstraint(int constraintid)=0;
virtual float getAppliedImpulse(int constraintid){ return 0.f;}