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;


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to