[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