From b0049e608859bd129bb5c13fecdd161811741185 Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Sat, 19 Apr 2008 21:09:40 +0000 Subject: 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. --- source/gameengine/Ketsji/KX_NearSensor.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'source/gameengine/Ketsji/KX_NearSensor.cpp') diff --git a/source/gameengine/Ketsji/KX_NearSensor.cpp b/source/gameengine/Ketsji/KX_NearSensor.cpp index e646e8ef84f..4086ac53f2a 100644 --- a/source/gameengine/Ketsji/KX_NearSensor.cpp +++ b/source/gameengine/Ketsji/KX_NearSensor.cpp @@ -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) -- cgit v1.2.3