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:
authorMitchell Stokes <mogurijin@gmail.com>2012-07-09 08:57:21 +0400
committerMitchell Stokes <mogurijin@gmail.com>2012-07-09 08:57:21 +0400
commit9d73cbf2c4104282eef7b022a3381da64d3077f1 (patch)
tree95acbadc114ef4c6b2291c7caef25ca11339c554 /source/gameengine/Ketsji
parent4ff0efd5a2a1790f7f4407d732bf01ec3d2f00b3 (diff)
As a response to issue [#28483] "Enable/Disable Rigid Body actuator do nothing" reported by Jean-Francois Gallant (pyroevil), I'm adding preliminary support to enable and disable rigid body physics on dynamic objects. This is can be done via the Edit Object Actuator or through KX_GameObject.enableRigidBody() and KX_GameObject.disableRigidBody(). Thanks to Sergej Reich for his help with the patch.
Diffstat (limited to 'source/gameengine/Ketsji')
-rw-r--r--source/gameengine/Ketsji/KX_BulletPhysicsController.cpp1
-rw-r--r--source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp18
2 files changed, 9 insertions, 10 deletions
diff --git a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp
index abc2460a5ba..b974886f60a 100644
--- a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp
+++ b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp
@@ -232,6 +232,7 @@ MT_Vector3 KX_BulletPhysicsController::getReactionForce()
}
void KX_BulletPhysicsController::setRigidBody(bool rigid)
{
+ CcdPhysicsController::setRigidBody(rigid);
}
/* This function dynamically adds the collision shape of another controller to
diff --git a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
index 227ca39281f..f1038c04499 100644
--- a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
+++ b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
@@ -118,6 +118,12 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
ci.m_MotionState = motionstate;
ci.m_gravity = btVector3(0,0,0);
+ ci.m_linearFactor = btVector3(objprop->m_lockXaxis? 0 : 1,
+ objprop->m_lockYaxis? 0 : 1,
+ objprop->m_lockZaxis? 0 : 1);
+ ci.m_angularFactor = btVector3(objprop->m_lockXRotaxis? 0 : 1,
+ objprop->m_lockYRotaxis? 0 : 1,
+ objprop->m_lockZRotaxis? 0 : 1);
ci.m_localInertiaTensor =btVector3(0,0,0);
ci.m_mass = objprop->m_dyna ? shapeprops->m_mass : 0.f;
ci.m_clamp_vel_min = shapeprops->m_clamp_vel_min;
@@ -441,16 +447,8 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
{
if (objprop->m_angular_rigidbody)
{
- btVector3 linearFactor(
- objprop->m_lockXaxis? 0 : 1,
- objprop->m_lockYaxis? 0 : 1,
- objprop->m_lockZaxis? 0 : 1);
- btVector3 angularFactor(
- objprop->m_lockXRotaxis? 0 : 1,
- objprop->m_lockYRotaxis? 0 : 1,
- objprop->m_lockZRotaxis? 0 : 1);
- rbody->setLinearFactor(linearFactor);
- rbody->setAngularFactor(angularFactor);
+ rbody->setLinearFactor(ci.m_linearFactor);
+ rbody->setAngularFactor(ci.m_angularFactor);
}
if (rbody && objprop->m_disableSleeping)