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,


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to