[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19872] trunk/blender/source/gameengine: BGE: some more cleanup in GetReplica/ProcessReplica of deformers: make them consistent with the other classes.

Benoit Bolsee benoit.bolsee at online.be
Wed Apr 22 18:26:23 CEST 2009


Revision: 19872
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19872
Author:   ben2610
Date:     2009-04-22 18:26:22 +0200 (Wed, 22 Apr 2009)

Log Message:
-----------
BGE: some more cleanup in GetReplica/ProcessReplica of deformers: make them consistent with the other classes.

Modified Paths:
--------------
    trunk/blender/source/gameengine/Converter/BL_DeformableGameObject.cpp
    trunk/blender/source/gameengine/Converter/BL_MeshDeformer.h
    trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.cpp
    trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.h
    trunk/blender/source/gameengine/Converter/BL_ShapeDeformer.cpp
    trunk/blender/source/gameengine/Converter/BL_ShapeDeformer.h
    trunk/blender/source/gameengine/Converter/BL_SkinDeformer.cpp
    trunk/blender/source/gameengine/Converter/BL_SkinDeformer.h
    trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
    trunk/blender/source/gameengine/Rasterizer/RAS_Deformer.h

Modified: trunk/blender/source/gameengine/Converter/BL_DeformableGameObject.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_DeformableGameObject.cpp	2009-04-22 14:42:00 UTC (rev 19871)
+++ trunk/blender/source/gameengine/Converter/BL_DeformableGameObject.cpp	2009-04-22 16:26:22 UTC (rev 19872)
@@ -46,7 +46,7 @@
 	KX_GameObject::ProcessReplica();
 
 	if (m_pDeformer)
-		m_pDeformer= (BL_MeshDeformer*)m_pDeformer->GetReplica(this);
+		m_pDeformer= (BL_MeshDeformer*)m_pDeformer->GetReplica();
 }
 
 CValue*		BL_DeformableGameObject::GetReplica()

Modified: trunk/blender/source/gameengine/Converter/BL_MeshDeformer.h
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_MeshDeformer.h	2009-04-22 14:42:00 UTC (rev 19871)
+++ trunk/blender/source/gameengine/Converter/BL_MeshDeformer.h	2009-04-22 16:26:22 UTC (rev 19872)
@@ -64,7 +64,8 @@
 	virtual void SetSimulatedTime(double time){};
 	virtual bool Apply(class RAS_IPolyMaterial *mat);
 	virtual bool Update(void){ return false; };
-	virtual	RAS_Deformer*	GetReplica(class KX_GameObject* replica){return NULL;};
+	virtual	RAS_Deformer*	GetReplica(){return NULL;};
+	virtual void ProcessReplica() { };
 	struct Mesh* GetMesh() { return m_bmesh; };
 	//	virtual void InitDeform(double time){};
 

Modified: trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.cpp	2009-04-22 14:42:00 UTC (rev 19871)
+++ trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.cpp	2009-04-22 16:26:22 UTC (rev 19872)
@@ -76,7 +76,7 @@
 	}
 };
 
-RAS_Deformer *BL_ModifierDeformer::GetReplica(class KX_GameObject* replica)
+RAS_Deformer *BL_ModifierDeformer::GetReplica()
 {
 	BL_ModifierDeformer *result;
 

Modified: trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.h
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.h	2009-04-22 14:42:00 UTC (rev 19871)
+++ trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.h	2009-04-22 16:26:22 UTC (rev 19872)
@@ -73,7 +73,7 @@
 	};
 
 	virtual void ProcessReplica();
-	virtual RAS_Deformer *GetReplica(class KX_GameObject* replica);
+	virtual RAS_Deformer *GetReplica();
 	virtual ~BL_ModifierDeformer();
 	virtual bool UseVertexArray()
 	{

Modified: trunk/blender/source/gameengine/Converter/BL_ShapeDeformer.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ShapeDeformer.cpp	2009-04-22 14:42:00 UTC (rev 19871)
+++ trunk/blender/source/gameengine/Converter/BL_ShapeDeformer.cpp	2009-04-22 16:26:22 UTC (rev 19872)
@@ -68,7 +68,7 @@
 {
 };
 
-RAS_Deformer *BL_ShapeDeformer::GetReplica(class KX_GameObject* replica)
+RAS_Deformer *BL_ShapeDeformer::GetReplica()
 {
 	BL_ShapeDeformer *result;
 
@@ -77,11 +77,6 @@
 	return result;
 }
 
-void BL_ShapeDeformer::ProcessReplica()
-{
-	BL_SkinDeformer::ProcessReplica();
-}
-
 bool BL_ShapeDeformer::LoadShapeDrivers(Object* arma)
 {
 	IpoCurve *icu;

Modified: trunk/blender/source/gameengine/Converter/BL_ShapeDeformer.h
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ShapeDeformer.h	2009-04-22 14:42:00 UTC (rev 19871)
+++ trunk/blender/source/gameengine/Converter/BL_ShapeDeformer.h	2009-04-22 16:26:22 UTC (rev 19872)
@@ -66,8 +66,7 @@
 	{
 	};
 
-	virtual void ProcessReplica();
-	virtual RAS_Deformer *GetReplica(class KX_GameObject* replica);
+	virtual RAS_Deformer *GetReplica();
 	virtual ~BL_ShapeDeformer();
 
 	bool Update (void);

Modified: trunk/blender/source/gameengine/Converter/BL_SkinDeformer.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_SkinDeformer.cpp	2009-04-22 14:42:00 UTC (rev 19871)
+++ trunk/blender/source/gameengine/Converter/BL_SkinDeformer.cpp	2009-04-22 16:26:22 UTC (rev 19872)
@@ -108,7 +108,7 @@
 		void **h_obj = (*map)[m_armobj];
 
 		if (h_obj)
-			SetArmature( (BL_ArmatureObject*)(*h_obj) );
+			m_armobj = (BL_ArmatureObject*)(*h_obj);
 		else
 			m_armobj=NULL;
 	}
@@ -151,21 +151,16 @@
 	return true;
 }
 
-RAS_Deformer *BL_SkinDeformer::GetReplica(class KX_GameObject* replica)
+RAS_Deformer *BL_SkinDeformer::GetReplica()
 {
 	BL_SkinDeformer *result;
 
 	result = new BL_SkinDeformer(*this);
-	/* Not inherited from PyObjectPlus so this isnt needed */
-	/* Just call a dummy function below, will be optimized out */
+	/* there is m_armobj that must be fixed but we cannot do it now, it will be done in Relink */
 	result->ProcessReplica();
 	return result;
 }
 
-void BL_SkinDeformer::ProcessReplica()
-{
-}
-
 //void where_is_pose (Object *ob);
 //void armature_deform_verts(Object *armOb, Object *target, float (*vertexCos)[3], int numVerts, int deformflag); 
 bool BL_SkinDeformer::Update(void)

Modified: trunk/blender/source/gameengine/Converter/BL_SkinDeformer.h
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_SkinDeformer.h	2009-04-22 14:42:00 UTC (rev 19871)
+++ trunk/blender/source/gameengine/Converter/BL_SkinDeformer.h	2009-04-22 16:26:22 UTC (rev 19872)
@@ -67,8 +67,7 @@
 					bool recalc_normal,
 					BL_ArmatureObject* arma = NULL);
 
-	virtual void ProcessReplica();
-	virtual RAS_Deformer *GetReplica(class KX_GameObject* replica);
+	virtual RAS_Deformer *GetReplica();
 	virtual ~BL_SkinDeformer();
 	bool Update (void);
 	bool Apply (class RAS_IPolyMaterial *polymat);

Modified: trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp	2009-04-22 14:42:00 UTC (rev 19871)
+++ trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp	2009-04-22 16:26:22 UTC (rev 19872)
@@ -34,7 +34,7 @@
 
 // defines USE_ODE to choose physics engine
 #include "KX_ConvertPhysicsObject.h"
-#include "KX_GameObject.h"
+#include "BL_DeformableGameObject.h"
 #include "RAS_MeshObject.h"
 #include "KX_Scene.h"
 #include "SYS_System.h"
@@ -670,11 +670,11 @@
 							
 	class KX_SoftBodyDeformer : public RAS_Deformer
 	{
-		class RAS_MeshObject*	m_pMeshObject;
-		class KX_GameObject*	m_gameobj;
+		class RAS_MeshObject*			m_pMeshObject;
+		class BL_DeformableGameObject*	m_gameobj;
 
 	public:
-		KX_SoftBodyDeformer(RAS_MeshObject*	pMeshObject,KX_GameObject*	gameobj)
+		KX_SoftBodyDeformer(RAS_MeshObject*	pMeshObject,BL_DeformableGameObject*	gameobj)
 			:m_pMeshObject(pMeshObject),
 			m_gameobj(gameobj)
 		{
@@ -687,7 +687,15 @@
 		};
 		virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map)
 		{
-			//printf("relink\n");
+			void **h_obj = (*map)[m_gameobj];
+
+			if (h_obj) {
+				m_gameobj = (BL_DeformableGameObject*)(*h_obj);
+				m_pMeshObject = m_gameobj->GetMesh(0);
+			} else {
+				m_gameobj = NULL;
+				m_pMeshObject = NULL;
+			}
 		}
 		virtual bool Apply(class RAS_IPolyMaterial *polymat)
 		{
@@ -751,12 +759,16 @@
 			//printf("update\n");
 			return true;//??
 		}
-		virtual RAS_Deformer *GetReplica(class KX_GameObject* replica)
+		virtual RAS_Deformer *GetReplica()
 		{
-			KX_SoftBodyDeformer* deformer = new KX_SoftBodyDeformer(replica->GetMesh(0),replica);
+			KX_SoftBodyDeformer* deformer = new KX_SoftBodyDeformer(*this);
+			deformer->ProcessReplica();
 			return deformer;
 		}
-
+		virtual void ProcessReplica()
+		{
+			// we have two pointers to deal with but we cannot do it now, will be done in Relink
+		}
 		virtual bool SkipVertexTransform()
 		{
 			return true;
@@ -1187,9 +1199,8 @@
 		if (softBody && gameobj->GetMesh(0))//only the first mesh, if any
 		{
 			//should be a mesh then, so add a soft body deformer
-			KX_SoftBodyDeformer* softbodyDeformer = new KX_SoftBodyDeformer( gameobj->GetMesh(0),gameobj);
+			KX_SoftBodyDeformer* softbodyDeformer = new KX_SoftBodyDeformer( gameobj->GetMesh(0),(BL_DeformableGameObject*)gameobj);
 			gameobj->SetDeformer(softbodyDeformer);
-			
 		}
 	}
 

Modified: trunk/blender/source/gameengine/Rasterizer/RAS_Deformer.h
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_Deformer.h	2009-04-22 14:42:00 UTC (rev 19871)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_Deformer.h	2009-04-22 16:26:22 UTC (rev 19872)
@@ -44,7 +44,8 @@
 	virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map)=0;
 	virtual bool Apply(class RAS_IPolyMaterial *polymat)=0;
 	virtual bool Update(void)=0;
-	virtual RAS_Deformer *GetReplica(class KX_GameObject* replica)=0;
+	virtual RAS_Deformer *GetReplica()=0;
+	virtual void ProcessReplica()=0;
 	virtual bool SkipVertexTransform()
 	{
 		return false;





More information about the Bf-blender-cvs mailing list