forked from bartvdbraak/blender
fix BGE bug #8094: Collision sensor on child object makes the object rotate or move very fast. Collision sensor can now be set on child object without side effect.
This commit is contained in:
parent
eb7edc4cba
commit
b0049e6088
@ -75,6 +75,21 @@ KX_NearSensor::KX_NearSensor(SCA_EventManager* eventmgr,
|
||||
SynchronizeTransform();
|
||||
}
|
||||
|
||||
void KX_NearSensor::SynchronizeTransform()
|
||||
{
|
||||
// The near and radar sensors are using a different physical object which is
|
||||
// not linked to the parent object, must synchronize it.
|
||||
if (m_physCtrl)
|
||||
{
|
||||
KX_GameObject* parent = ((KX_GameObject*)GetParent());
|
||||
MT_Vector3 pos = parent->NodeGetWorldPosition();
|
||||
MT_Quaternion orn = parent->NodeGetWorldOrientation().getRotation();
|
||||
m_physCtrl->setPosition(pos.x(),pos.y(),pos.z());
|
||||
m_physCtrl->setOrientation(orn.x(),orn.y(),orn.z(),orn.w());
|
||||
m_physCtrl->calcXform();
|
||||
}
|
||||
}
|
||||
|
||||
void KX_NearSensor::RegisterSumo(KX_TouchEventManager *touchman)
|
||||
{
|
||||
if (m_physCtrl)
|
||||
|
@ -68,6 +68,7 @@ public:
|
||||
PyTypeObject* T=&Type);
|
||||
*/
|
||||
virtual ~KX_NearSensor();
|
||||
virtual void SynchronizeTransform();
|
||||
virtual CValue* GetReplica();
|
||||
virtual bool Evaluate(CValue* event);
|
||||
|
||||
|
@ -48,18 +48,8 @@
|
||||
|
||||
void KX_TouchSensor::SynchronizeTransform()
|
||||
{
|
||||
|
||||
if (m_physCtrl)
|
||||
{
|
||||
|
||||
KX_GameObject* parent = ((KX_GameObject*)GetParent());
|
||||
MT_Vector3 pos = parent->NodeGetWorldPosition();
|
||||
MT_Quaternion orn = parent->NodeGetWorldOrientation().getRotation();
|
||||
m_physCtrl->setPosition(pos.x(),pos.y(),pos.z());
|
||||
m_physCtrl->setOrientation(orn.x(),orn.y(),orn.z(),orn.w());
|
||||
m_physCtrl->calcXform();
|
||||
}
|
||||
|
||||
// the touch sensor does not require any synchronization: it uses
|
||||
// the same physical object which is already synchronized by Blender
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user