[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14481] trunk/blender/source/gameengine/ Ketsji: fix BGE bug #8094: Collision sensor on child object makes the object rotate or move very fast .

Benoit Bolsee benoit.bolsee at online.be
Sat Apr 19 23:09:40 CEST 2008


Revision: 14481
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14481
Author:   ben2610
Date:     2008-04-19 23:09:40 +0200 (Sat, 19 Apr 2008)

Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/blender/source/gameengine/Ketsji/KX_NearSensor.cpp
    trunk/blender/source/gameengine/Ketsji/KX_NearSensor.h
    trunk/blender/source/gameengine/Ketsji/KX_TouchSensor.cpp

Modified: trunk/blender/source/gameengine/Ketsji/KX_NearSensor.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_NearSensor.cpp	2008-04-19 19:50:46 UTC (rev 14480)
+++ trunk/blender/source/gameengine/Ketsji/KX_NearSensor.cpp	2008-04-19 21:09:40 UTC (rev 14481)
@@ -75,6 +75,21 @@
 	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)

Modified: trunk/blender/source/gameengine/Ketsji/KX_NearSensor.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_NearSensor.h	2008-04-19 19:50:46 UTC (rev 14480)
+++ trunk/blender/source/gameengine/Ketsji/KX_NearSensor.h	2008-04-19 21:09:40 UTC (rev 14481)
@@ -68,6 +68,7 @@
 			PyTypeObject* T=&Type);
 */
 	virtual ~KX_NearSensor(); 
+	virtual void SynchronizeTransform();
 	virtual CValue* GetReplica();
 	virtual bool Evaluate(CValue* event);
 

Modified: trunk/blender/source/gameengine/Ketsji/KX_TouchSensor.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_TouchSensor.cpp	2008-04-19 19:50:46 UTC (rev 14480)
+++ trunk/blender/source/gameengine/Ketsji/KX_TouchSensor.cpp	2008-04-19 21:09:40 UTC (rev 14481)
@@ -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
 }
 
 





More information about the Bf-blender-cvs mailing list