diff options
author | Erwin Coumans <blender@erwincoumans.com> | 2006-12-16 08:50:38 +0300 |
---|---|---|
committer | Erwin Coumans <blender@erwincoumans.com> | 2006-12-16 08:50:38 +0300 |
commit | 92379ec21f78ba7a7f7354d3039ef300c0bb2cb4 (patch) | |
tree | 3fd43168fe1267d6d654cd5acddf812cda158c64 /source/gameengine/Physics | |
parent | 3c9a11f24ed9bd131e049e98e86aaee1bcaeb53a (diff) |
contribution from RCRuiz:
drawing of rigidbody constraint pivots, and allow passing of full constraint frame.
Diffstat (limited to 'source/gameengine/Physics')
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;} |