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-12-13 12:53:30 +0300
committerKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-12-13 12:53:30 +0300
commit551806bce89c142ac731651637dc9f240d9c2302 (patch)
treebcdcaf7823822dcaf4846a54579c2a0879968cd1
parent5dc6d22e460217893ae1dbce8d0a1ad31d45844e (diff)
Set the physics scale on added objects. (Fix bug #1837)
-rw-r--r--source/gameengine/Ketsji/KX_Scene.cpp12
-rw-r--r--source/gameengine/Physics/Sumo/SumoPhysicsController.cpp3
2 files changed, 9 insertions, 6 deletions
diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp
index 26825fe5e1f..09e4ae7bbb1 100644
--- a/source/gameengine/Ketsji/KX_Scene.cpp
+++ b/source/gameengine/Ketsji/KX_Scene.cpp
@@ -600,21 +600,23 @@ SCA_IObject* KX_Scene::AddReplicaObject(class CValue* originalobject,
MT_Matrix3x3 newori = ((KX_GameObject*) parentobject)->NodeGetWorldOrientation();
replica->NodeSetLocalOrientation(newori);
+
+ // get the rootnode's scale
+ MT_Vector3 newscale = parentobj->GetSGNode()->GetRootSGParent()->GetLocalScale();
+
+ // set the replica's relative scale with the rootnode's scale
+ replica->NodeSetRelativeScale(newscale);
if (replica->GetPhysicsController())
{
replica->GetPhysicsController()->setPosition(newpos);
replica->GetPhysicsController()->setOrientation(newori.getRotation());
+ replica->GetPhysicsController()->setScaling(newscale);
}
// here we want to set the relative scale: the rootnode's scale will override all other
// scalings, so lets better prepare for it
- // get the rootnode's scale
- MT_Vector3 newscale = parentobj->GetSGNode()->GetRootSGParent()->GetLocalScale();
-
- // set the replica's relative scale with the rootnode's scale
- replica->NodeSetRelativeScale(newscale);
replica->GetSGNode()->UpdateWorldData(0);
replica->GetSGNode()->SetBBox(originalobj->GetSGNode()->BBox());
diff --git a/source/gameengine/Physics/Sumo/SumoPhysicsController.cpp b/source/gameengine/Physics/Sumo/SumoPhysicsController.cpp
index 5301e125ce1..46eeef264de 100644
--- a/source/gameengine/Physics/Sumo/SumoPhysicsController.cpp
+++ b/source/gameengine/Physics/Sumo/SumoPhysicsController.cpp
@@ -174,7 +174,8 @@ void SumoPhysicsController::setPosition(float posX,float posY,float posZ)
void SumoPhysicsController::setScaling(float scaleX,float scaleY,float scaleZ)
{
- m_sumoObj->setScaling(MT_Vector3(scaleX,scaleY,scaleZ));
+ if (!m_bDyna)
+ m_sumoObj->setScaling(MT_Vector3(scaleX,scaleY,scaleZ));
}
// physics methods