[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20328] trunk/blender/source/gameengine/ Ketsji/KX_GameObject.cpp: BGE remove parent: unparented object keeps the linear and angular velocity it had while being parented .
Benoit Bolsee
benoit.bolsee at online.be
Thu May 21 21:38:50 CEST 2009
Revision: 20328
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20328
Author: ben2610
Date: 2009-05-21 21:38:49 +0200 (Thu, 21 May 2009)
Log Message:
-----------
BGE remove parent: unparented object keeps the linear and angular velocity it had while being parented.
Modified Paths:
--------------
trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
Modified: trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp 2009-05-21 18:22:35 UTC (rev 20327)
+++ trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp 2009-05-21 19:38:49 UTC (rev 20328)
@@ -312,6 +312,18 @@
rootobj->m_pPhysicsController1->RemoveCompoundChild(m_pPhysicsController1);
}
m_pPhysicsController1->RestoreDynamics();
+ if (m_pPhysicsController1->IsDyna() && rootobj->m_pPhysicsController1)
+ {
+ // dynamic object should remember the velocity they had while being parented
+ MT_Point3 childPoint = GetSGNode()->GetWorldPosition();
+ MT_Point3 rootPoint = rootobj->GetSGNode()->GetWorldPosition();
+ MT_Point3 relPoint;
+ relPoint = (childPoint-rootPoint);
+ MT_Vector3 linVel = rootobj->m_pPhysicsController1->GetVelocity(relPoint);
+ MT_Vector3 angVel = rootobj->m_pPhysicsController1->GetAngularVelocity();
+ m_pPhysicsController1->SetLinearVelocity(linVel, false);
+ m_pPhysicsController1->SetAngularVelocity(angVel, false);
+ }
}
// graphically, the object hasn't change place, no need to update m_pGraphicController
}
More information about the Bf-blender-cvs
mailing list