Set the physics scale on added objects. (Fix bug #1837)

This commit is contained in:
Kester Maddock 2004-12-13 09:53:30 +00:00
parent 5dc6d22e46
commit 551806bce8
2 changed files with 14 additions and 11 deletions

@ -600,22 +600,24 @@ SCA_IObject* KX_Scene::AddReplicaObject(class CValue* originalobject,
MT_Matrix3x3 newori = ((KX_GameObject*) parentobject)->NodeGetWorldOrientation();
replica->NodeSetLocalOrientation(newori);
if (replica->GetPhysicsController())
{
replica->GetPhysicsController()->setPosition(newpos);
replica->GetPhysicsController()->setOrientation(newori.getRotation());
}
// 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);
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
replica->GetSGNode()->UpdateWorldData(0);
replica->GetSGNode()->SetBBox(originalobj->GetSGNode()->BBox());
replica->GetSGNode()->SetRadius(originalobj->GetSGNode()->Radius());

@ -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