Set the physics scale on added objects. (Fix bug #1837)
authorKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>
Mon, 13 Dec 2004 09:53:30 +0000 (09:53 +0000)
committerKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>
Mon, 13 Dec 2004 09:53:30 +0000 (09:53 +0000)
source/gameengine/Ketsji/KX_Scene.cpp
source/gameengine/Physics/Sumo/SumoPhysicsController.cpp

index 26825fe5e1f372b7278cd3de41f2d23177616276..09e4ae7bbb17f98d42206fbadc8eb002153694d5 100644 (file)
@@ -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());
index 5301e125ce10c43957c70d6e01191c522f9285dc..46eeef264def978088ff339fd89aaec69ae9e167 100644 (file)
@@ -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