[Bf-blender-cvs] [8468a28] soc-2014-bge: gameengine: scenegraph corrections

Ines Almeida noreply at git.blender.org
Thu Jul 24 20:34:19 CEST 2014


Commit: 8468a28467582b9ff6022e2a6863635b33569b70
Author: Ines Almeida
Date:   Wed Jul 23 15:50:40 2014 +0100
Branches: soc-2014-bge
https://developer.blender.org/rB8468a28467582b9ff6022e2a6863635b33569b70

gameengine: scenegraph corrections

===================================================================

M	source/gameengine/Converter/BL_BlenderDataConversion.cpp
M	source/gameengine/Ketsji/KX_GameObject.cpp
M	source/gameengine/Ketsji/KX_PhysicsEngineEnums.h
M	source/gameengine/Ketsji/KX_SG_NodeRelationships.h
M	source/gameengine/SceneGraph/SG_Node.cpp
M	source/gameengine/SceneGraph/SG_ParentRelation.h
M	source/gameengine/SceneGraph/SG_Spatial.cpp
M	source/gameengine/SceneGraph/SG_Spatial.h

===================================================================

diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
index 845ab8c..4f8daa5 100644
--- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp
+++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
@@ -1763,10 +1763,14 @@ static void bl_ConvertBlenderObject_Single(
 
 	MT_Matrix3x3 rotation;
 	float rotmat[3][3];
-	BKE_object_rot_to_mat3(blenderobject, rotmat, false);
+	BKE_object_rot_to_mat3(blenderobject, rotmat, true);
 	rotation.setValue3x3((float*)rotmat);
 
-	MT_Vector3 scale(blenderobject->size);
+	MT_Vector3 scale(
+		blenderobject->size[0]*blenderobject->dscale[0],
+		blenderobject->size[1]*blenderobject->dscale[1],
+		blenderobject->size[2]*blenderobject->dscale[2]
+	);
 
 	gameobj->NodeSetLocalPosition(pos);
 	gameobj->NodeSetLocalOrientation(rotation);
diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp
index 58b7d13..5b237ac 100644
--- a/source/gameengine/Ketsji/KX_GameObject.cpp
+++ b/source/gameengine/Ketsji/KX_GameObject.cpp
@@ -599,7 +599,7 @@ void KX_GameObject::ApplyMovement(const MT_Vector3& dloc,bool local)
 		{
 			m_pPhysicsController->RelativeTranslate(dloc,local);
 		}
-		GetSGNode()->RelativeTranslate(dloc,GetSGNode()->GetSGParent(),local);
+		GetSGNode()->RelativeTranslate(dloc,local);
 	}
 }
 
diff --git a/source/gameengine/Ketsji/KX_PhysicsEngineEnums.h b/source/gameengine/Ketsji/KX_PhysicsEngineEnums.h
index ca99c2e..e5d1c09 100644
--- a/source/gameengine/Ketsji/KX_PhysicsEngineEnums.h
+++ b/source/gameengine/Ketsji/KX_PhysicsEngineEnums.h
@@ -36,6 +36,7 @@ enum	e_PhysicsEngine
 {
 		NoSelection = -1,
 		UseNone     =  0,
+		/* UseEnji=1, UseSumo, useDynamo and useODE were removed */
 		UseBullet   =  5,
 };
 
diff --git a/source/gameengine/Ketsji/KX_SG_NodeRelationships.h b/source/gameengine/Ketsji/KX_SG_NodeRelationships.h
index c9a7a03..0f4e3fb 100644
--- a/source/gameengine/Ketsji/KX_SG_NodeRelationships.h
+++ b/source/gameengine/Ketsji/KX_SG_NodeRelationships.h
@@ -171,4 +171,4 @@ private :
 #endif
 };
 
-#endif * __KX_SG_NODERELATIONSHIPS_H__ */
+#endif /* __KX_SG_NODERELATIONSHIPS_H__ */
diff --git a/source/gameengine/SceneGraph/SG_Node.cpp b/source/gameengine/SceneGraph/SG_Node.cpp
index 3e69658..1a2597e 100644
--- a/source/gameengine/SceneGraph/SG_Node.cpp
+++ b/source/gameengine/SceneGraph/SG_Node.cpp
@@ -170,9 +170,6 @@ void SG_Node::RemoveChild(SG_Node* child)
 
 void SG_Node::UpdateWorldData(double time, bool parentUpdated)
 {
-	//if (!GetSGParent())
-	//	return;
-
 	if (UpdateSpatialData(GetSGParent(),time,parentUpdated))
 		// to update the 
 		ActivateUpdateTransformCallback();
diff --git a/source/gameengine/SceneGraph/SG_ParentRelation.h b/source/gameengine/SceneGraph/SG_ParentRelation.h
index f83b20b..493fcd0 100644
--- a/source/gameengine/SceneGraph/SG_ParentRelation.h
+++ b/source/gameengine/SceneGraph/SG_ParentRelation.h
@@ -66,7 +66,7 @@ public :
 	 */
 	virtual bool UpdateChildCoordinates(SG_Spatial * child, const SG_Spatial * parent, bool& parentUpdated) = 0;
 
-	/* XXXX */
+	/* Destructor */
 	virtual ~SG_ParentRelation() {}
 
 	/** 
diff --git a/source/gameengine/SceneGraph/SG_Spatial.cpp b/source/gameengine/SceneGraph/SG_Spatial.cpp
index 1438ffc..c8edc13 100644
--- a/source/gameengine/SceneGraph/SG_Spatial.cpp
+++ b/source/gameengine/SceneGraph/SG_Spatial.cpp
@@ -97,10 +97,8 @@ bool SG_Spatial::UpdateSpatialData(const SG_Spatial *parent, double time, bool&
 	bool bComputesWorldTransform = false;
 
 	// update spatial controllers
-
 	SGControllerList::iterator cit = GetSGControllerList().begin();
 	SGControllerList::const_iterator c_end = GetSGControllerList().end();
-
 	for (;cit!=c_end;++cit)
 	{
 		if ((*cit)->Update(time))
@@ -110,44 +108,24 @@ bool SG_Spatial::UpdateSpatialData(const SG_Spatial *parent, double time, bool&
 	// If none of the objects updated our values then we ask the
 	// parent_relation object owned by this class to update
 	// our world coordinates.
-
 	if (!bComputesWorldTransform)
 		bComputesWorldTransform = ComputeWorldTransforms(parent, parentUpdated);
 
 	return bComputesWorldTransform;
 }
 
-/**
- * Position and translation methods
- */
 
-void SG_Spatial::RelativeTranslate(const MT_Vector3& trans, const SG_Spatial *parent, bool local)
+
+void SG_Spatial::RelativeTranslate(const MT_Vector3& trans, bool local)
 {
 	if (local) {
-		m_localPosition += m_localRotation * trans;
-	}
-	else {
-		if (parent) {
-			m_localPosition += trans * parent->GetWorldOrientation();
-		}
-		else {
-			m_localPosition += trans;
-		}
+		m_localPosition += m_localScaling * (m_localRotation * trans);
+	} else {
+		m_localPosition += trans;
 	}
 	SetModified();
 }
 
-
-/**
- * Scaling methods.
- */ 
-
-
-/**
- * Orientation and rotation methods.
- */
-
-
 void SG_Spatial::RelativeRotate(const MT_Matrix3x3& rot, bool local) {
 	m_localRotation = m_localRotation * (
 		local ?
@@ -158,6 +136,7 @@ void SG_Spatial::RelativeRotate(const MT_Matrix3x3& rot, bool local) {
 
 
 
+
 MT_Transform SG_Spatial::GetWorldTransform() const
 {
 	return MT_Transform(m_worldPosition, 
diff --git a/source/gameengine/SceneGraph/SG_Spatial.h b/source/gameengine/SceneGraph/SG_Spatial.h
index f9fa47a..bacae60 100644
--- a/source/gameengine/SceneGraph/SG_Spatial.h
+++ b/source/gameengine/SceneGraph/SG_Spatial.h
@@ -107,14 +107,10 @@ public:
 
 	/**
 	 * Apply a translation relative to the current position.
-	 * if local then the translation is assumed to be in the 
-	 * local coordinates of this object. If not then the translation
-	 * is assumed to be in global coordinates. In this case 
-	 * you must provide a pointer to the parent of this object if it 
-	 * exists otherwise if there is no parent set it to NULL
+	 * If local then the translation is assumed to be in the local coordinates of this object.
+	 * If not then the translation is assumed to be in global coordinates.
 	 */ 
-
-	void RelativeTranslate(const MT_Vector3& trans, const SG_Spatial *parent, bool local);
+	void RelativeTranslate(const MT_Vector3& trans, bool local);
 
 	void SetLocalPosition(const MT_Point3& trans)
 	{




More information about the Bf-blender-cvs mailing list