[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16165] branches/apricot/source/gameengine /Converter: Apricot Branch: bugfix, some meshes were not deforming anymore

Brecht Van Lommel brechtvanlommel at pandora.be
Mon Aug 18 12:27:48 CEST 2008


Revision: 16165
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16165
Author:   blendix
Date:     2008-08-18 12:27:48 +0200 (Mon, 18 Aug 2008)

Log Message:
-----------
Apricot Branch: bugfix, some meshes were not deforming anymore
after a recent commit.

Modified Paths:
--------------
    branches/apricot/source/gameengine/Converter/BL_DeformableGameObject.cpp
    branches/apricot/source/gameengine/Converter/BL_MeshDeformer.cpp
    branches/apricot/source/gameengine/Converter/BL_MeshDeformer.h
    branches/apricot/source/gameengine/Converter/BL_ShapeDeformer.h
    branches/apricot/source/gameengine/Converter/BL_SkinDeformer.cpp
    branches/apricot/source/gameengine/Converter/BL_SkinDeformer.h

Modified: branches/apricot/source/gameengine/Converter/BL_DeformableGameObject.cpp
===================================================================
--- branches/apricot/source/gameengine/Converter/BL_DeformableGameObject.cpp	2008-08-18 10:24:56 UTC (rev 16164)
+++ branches/apricot/source/gameengine/Converter/BL_DeformableGameObject.cpp	2008-08-18 10:27:48 UTC (rev 16165)
@@ -41,12 +41,14 @@
 		delete m_pDeformer;		//	__NLA : Temporary until we decide where to put this
 }
 
-void	BL_DeformableGameObject::ProcessReplica(KX_GameObject* replica)
+void BL_DeformableGameObject::ProcessReplica(KX_GameObject* replica)
 {
+	BL_MeshDeformer *deformer;
 	KX_GameObject::ProcessReplica(replica);
 
-	if (m_pDeformer){
-		((BL_DeformableGameObject*)replica)->m_pDeformer = m_pDeformer->GetReplica();
+	if (m_pDeformer) {
+		deformer = (BL_MeshDeformer*)m_pDeformer->GetReplica();
+		((BL_DeformableGameObject*)replica)->m_pDeformer = deformer;
 	}
 
 }

Modified: branches/apricot/source/gameengine/Converter/BL_MeshDeformer.cpp
===================================================================
--- branches/apricot/source/gameengine/Converter/BL_MeshDeformer.cpp	2008-08-18 10:24:56 UTC (rev 16164)
+++ branches/apricot/source/gameengine/Converter/BL_MeshDeformer.cpp	2008-08-18 10:27:48 UTC (rev 16165)
@@ -90,8 +90,18 @@
 		delete [] m_transverts;
 	if (m_transnors)
 		delete [] m_transnors;
-};
+}
+ 
+void BL_MeshDeformer::Relink(GEN_Map<class GEN_HashedPtr, void*>*map)
+{
+	void **h_obj = (*map)[m_gameobj];
 
+	if (h_obj)
+		m_gameobj = (BL_DeformableGameObject*)(*h_obj);
+	else
+		m_gameobj = NULL;
+}
+
 /**
  * @warning This function is expensive!
  */
@@ -218,4 +228,4 @@
 		m_tvtot = m_bmesh->totvert;
 	}
 }
- 
+

Modified: branches/apricot/source/gameengine/Converter/BL_MeshDeformer.h
===================================================================
--- branches/apricot/source/gameengine/Converter/BL_MeshDeformer.h	2008-08-18 10:24:56 UTC (rev 16164)
+++ branches/apricot/source/gameengine/Converter/BL_MeshDeformer.h	2008-08-18 10:27:48 UTC (rev 16165)
@@ -47,7 +47,7 @@
 public:
 	void VerifyStorage();
 	void RecalcNormals();
-	virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map){};
+	virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map);
 	BL_MeshDeformer(BL_DeformableGameObject *gameobj,
 					struct Object* obj,
 					class BL_SkinMeshObject *meshobj ):
@@ -67,6 +67,7 @@
 	virtual	RAS_Deformer*	GetReplica(){return NULL;};
 	struct Mesh* GetMesh() { return m_bmesh; };
 	//	virtual void InitDeform(double time){};
+
 protected:
 	class BL_SkinMeshObject*	m_pMeshObject;
 	struct Mesh*				m_bmesh;

Modified: branches/apricot/source/gameengine/Converter/BL_ShapeDeformer.h
===================================================================
--- branches/apricot/source/gameengine/Converter/BL_ShapeDeformer.h	2008-08-18 10:24:56 UTC (rev 16164)
+++ branches/apricot/source/gameengine/Converter/BL_ShapeDeformer.h	2008-08-18 10:27:48 UTC (rev 16165)
@@ -43,17 +43,6 @@
 class BL_ShapeDeformer : public BL_SkinDeformer  
 {
 public:
-	virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map)
-	{
-		void **h_obj = (*map)[m_gameobj];
-		if (h_obj){
-			m_gameobj = (BL_DeformableGameObject*)(*h_obj);
-		}
-		else
-			m_gameobj=NULL;
-		// relink the underlying skin deformer
-		BL_SkinDeformer::Relink(map);
-	};
 	BL_ShapeDeformer(BL_DeformableGameObject *gameobj,
                      Object *bmeshobj,
                      BL_SkinMeshObject *mesh)

Modified: branches/apricot/source/gameengine/Converter/BL_SkinDeformer.cpp
===================================================================
--- branches/apricot/source/gameengine/Converter/BL_SkinDeformer.cpp	2008-08-18 10:24:56 UTC (rev 16164)
+++ branches/apricot/source/gameengine/Converter/BL_SkinDeformer.cpp	2008-08-18 10:27:48 UTC (rev 16165)
@@ -99,6 +99,20 @@
 		m_armobj->Release();
 }
 
+void BL_SkinDeformer::Relink(GEN_Map<class GEN_HashedPtr, void*>*map)
+{
+	if (m_armobj) {
+		void **h_obj = (*map)[m_armobj];
+
+		if (h_obj)
+			SetArmature( (BL_ArmatureObject*)(*h_obj) );
+		else
+			m_armobj=NULL;
+	}
+
+	BL_MeshDeformer::Relink(map);
+}
+
 bool BL_SkinDeformer::Apply(RAS_IPolyMaterial *mat)
 {
 	RAS_MeshSlot::iterator it;
@@ -152,7 +166,7 @@
 	/* See if the armature has been updated for this frame */
 	if (PoseUpdated()){	
 		float obmat[4][4];	// the original object matrice 
-		
+
 		/* XXX note: where_is_pose() (from BKE_armature.h) calculates all matrices needed to start deforming */
 		/* but it requires the blender object pointer... */
 		Object* par_arma = m_armobj->GetArmatureObject();
@@ -186,6 +200,7 @@
 		/* indicate that the m_transverts and normals are up to date */
 		return true;
 	}
+
 	return false;
 }
 

Modified: branches/apricot/source/gameengine/Converter/BL_SkinDeformer.h
===================================================================
--- branches/apricot/source/gameengine/Converter/BL_SkinDeformer.h	2008-08-18 10:24:56 UTC (rev 16164)
+++ branches/apricot/source/gameengine/Converter/BL_SkinDeformer.h	2008-08-18 10:27:48 UTC (rev 16165)
@@ -50,17 +50,7 @@
 {
 public:
 //	void SetArmatureController (BL_ArmatureController *cont);
-	virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map)
-	{
-		if (m_armobj){
-			void **h_obj = (*map)[m_armobj];
-			if (h_obj){
-				SetArmature( (BL_ArmatureObject*)(*h_obj) );
-			}
-			else
-				m_armobj=NULL;
-		}
-	}
+	virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map);
 	void SetArmature (class BL_ArmatureObject *armobj);
 
 	BL_SkinDeformer(BL_DeformableGameObject *gameobj,





More information about the Bf-blender-cvs mailing list