Revision: 28979
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28979
Author:   blendix
Date:     2010-05-25 15:50:36 +0200 (Tue, 25 May 2010)

Log Message:
-----------
Render Branch: svn merge 
https://svn.blender.org/svnroot/bf-blender/trunk/blender -r28971:28978

Modified Paths:
--------------
    branches/render25/source/blender/blenkernel/intern/cloth.c
    branches/render25/source/blender/blenkernel/intern/implicit.c
    branches/render25/source/blender/blenloader/intern/readfile.c
    branches/render25/source/gameengine/Converter/BL_BlenderDataConversion.cpp
    branches/render25/source/gameengine/Converter/BL_ModifierDeformer.cpp
    branches/render25/source/gameengine/Converter/BL_ModifierDeformer.h
    branches/render25/source/gameengine/Ketsji/KX_Scene.cpp

Modified: branches/render25/source/blender/blenkernel/intern/cloth.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/cloth.c  2010-05-25 
13:33:59 UTC (rev 28978)
+++ branches/render25/source/blender/blenkernel/intern/cloth.c  2010-05-25 
13:50:36 UTC (rev 28979)
@@ -27,18 +27,16 @@
 
 #include "MEM_guardedalloc.h"
 
-#include "BKE_cloth.h"
+#include "BLI_ghash.h"
 
 #include "BKE_cdderivedmesh.h"
+#include "BKE_cloth.h"
 #include "BKE_effect.h"
 #include "BKE_global.h"
 #include "BKE_modifier.h"
+#include "BKE_pointcache.h"
 #include "BKE_utildefines.h"
 
-#include "BKE_pointcache.h"
-
-#include "BLI_ghash.h"
-
 #ifdef _WIN32
 void tstart ( void )
 {}

Modified: branches/render25/source/blender/blenkernel/intern/implicit.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/implicit.c       
2010-05-25 13:33:59 UTC (rev 28978)
+++ branches/render25/source/blender/blenkernel/intern/implicit.c       
2010-05-25 13:50:36 UTC (rev 28979)
@@ -39,7 +39,6 @@
 
 #include "BLI_threads.h"
 
-//#define CLOTH_GOAL_ORIGINAL
 #define CLOTH_OPENMP_LIMIT 25
 
 #ifdef _WIN32
@@ -2140,7 +2139,7 @@
                        
                        // update verts to current positions
                        for(i = 0; i < numverts; i++)
-                       {       
+                       {
                                VECCOPY(verts[i].txold, verts[i].tx);
                                VECCOPY(verts[i].tx, id->Xnew[i]);
 
@@ -2175,7 +2174,7 @@
                        
                        // X = Xnew;
                        cp_lfvector(id->X, id->Xnew, numverts);
-                       
+
                        // if there were collisions, advance the velocity from 
v_n+1/2 to v_n+1
                        // also used now for filtering goal and rigid body 
damping changes now
                        

Modified: branches/render25/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/render25/source/blender/blenloader/intern/readfile.c       
2010-05-25 13:33:59 UTC (rev 28978)
+++ branches/render25/source/blender/blenloader/intern/readfile.c       
2010-05-25 13:50:36 UTC (rev 28979)
@@ -10969,8 +10969,10 @@
                }
        }
        
+
        /* put 2.50 compatibility code here until next subversion bump */
        {
+               Object *ob;
                bScreen *sc;
 
                for (sc= main->screen.first; sc; sc= sc->id.next) {
@@ -10992,6 +10994,38 @@
                }
 
                do_version_mdef_250(fd, lib, main);
+
+               /* parent type to modifier */
+               for(ob = main->object.first; ob; ob = ob->id.next) {
+                       if(ob->parent) {
+                               Object *parent= newlibadr(fd, lib, ob->parent);
+                               if(parent->type==OB_ARMATURE && 
ob->partype==PARSKEL) {
+                                       ArmatureModifierData *amd;
+
+                                       amd = (ArmatureModifierData*) 
modifier_new(eModifierType_Armature);
+                                       amd->object = ob->parent;
+                                       BLI_addtail((ListBase*)&ob->modifiers, 
amd);
+                                       amd->deformflag= ((bArmature 
*)(parent->data))->deformflag;
+                                       ob->partype = PAROBJECT;
+                               }
+                               else if(parent->type==OB_LATTICE && 
ob->partype==PARSKEL) {
+                                       LatticeModifierData *lmd;
+
+                                       lmd = (LatticeModifierData*) 
modifier_new(eModifierType_Lattice);
+                                       lmd->object = ob->parent;
+                                       BLI_addtail((ListBase*)&ob->modifiers, 
lmd);
+                                       ob->partype = PAROBJECT;
+                               }
+                               else if(parent->type==OB_CURVE && 
ob->partype==PARCURVE) {
+                                       CurveModifierData *cmd;
+
+                                       cmd = (CurveModifierData*) 
modifier_new(eModifierType_Curve);
+                                       cmd->object = ob->parent;
+                                       BLI_addtail((ListBase*)&ob->modifiers, 
cmd);
+                                       ob->partype = PAROBJECT;
+                               }
+                       }
+               }
        }
 
        if (main->versionfile < 252 || (main->versionfile == 252 && 
main->subversionfile < 10))

Modified: 
branches/render25/source/gameengine/Converter/BL_BlenderDataConversion.cpp
===================================================================
--- branches/render25/source/gameengine/Converter/BL_BlenderDataConversion.cpp  
2010-05-25 13:33:59 UTC (rev 28978)
+++ branches/render25/source/gameengine/Converter/BL_BlenderDataConversion.cpp  
2010-05-25 13:50:36 UTC (rev 28979)
@@ -1729,7 +1729,7 @@
                // only support relative shape key
                bool bHasShapeKey = mesh->key != NULL && 
mesh->key->type==KEY_RELATIVE;
                bool bHasDvert = mesh->dvert != NULL && ob->defbase.first;
-               bool bHasArmature = (ob->parent && ob->parent->type == 
OB_ARMATURE && ob->partype==PARSKEL && bHasDvert);
+               bool bHasArmature = 
(BL_ModifierDeformer::HasArmatureDeformer(ob) && ob->parent && ob->parent->type 
== OB_ARMATURE && bHasDvert);
                bool bHasModifier = 
BL_ModifierDeformer::HasCompatibleDeformer(ob);
                bool bHasSoftBody = (!ob->parent && (ob->gameflag & 
OB_SOFT_BODY));
 
@@ -2357,8 +2357,8 @@
        
                        if (me->dvert){
                                BL_DeformableGameObject *obj = 
(BL_DeformableGameObject*)converter->FindGameObject(blenderobj);
-       
-                               if (obj && blenderobj->parent && 
blenderobj->parent->type==OB_ARMATURE && blenderobj->partype==PARSKEL){
+
+                               if (obj && 
BL_ModifierDeformer::HasArmatureDeformer(blenderobj) && blenderobj->parent && 
blenderobj->parent->type==OB_ARMATURE){
                                        KX_GameObject *par = 
converter->FindGameObject(blenderobj->parent);
                                        if (par && obj->GetDeformer())
                                                
((BL_SkinDeformer*)obj->GetDeformer())->SetArmature((BL_ArmatureObject*) par);

Modified: branches/render25/source/gameengine/Converter/BL_ModifierDeformer.cpp
===================================================================
--- branches/render25/source/gameengine/Converter/BL_ModifierDeformer.cpp       
2010-05-25 13:33:59 UTC (rev 28978)
+++ branches/render25/source/gameengine/Converter/BL_ModifierDeformer.cpp       
2010-05-25 13:50:36 UTC (rev 28979)
@@ -114,11 +114,27 @@
                        continue;
                if (!(md->mode & eModifierMode_Realtime))
                        continue;
+               /* armature modifier are handled by SkinDeformer, not 
ModifierDeformer */
+               if (md->type == eModifierType_Armature )
+                       continue;
                return true;
        }
        return false;
 }
 
+bool BL_ModifierDeformer::HasArmatureDeformer(Object *ob)
+{
+       if (!ob->modifiers.first)
+               return false;
+
+       ModifierData* md;
+       for (md = (ModifierData*)ob->modifiers.first; md; md = 
(ModifierData*)md->next) {
+               if (md->type == eModifierType_Armature )
+                       return true;
+       }
+       return false;
+}
+
 bool BL_ModifierDeformer::Update(void)
 {
        bool bShapeUpdate = BL_ShapeDeformer::Update();

Modified: branches/render25/source/gameengine/Converter/BL_ModifierDeformer.h
===================================================================
--- branches/render25/source/gameengine/Converter/BL_ModifierDeformer.h 
2010-05-25 13:33:59 UTC (rev 28978)
+++ branches/render25/source/gameengine/Converter/BL_ModifierDeformer.h 
2010-05-25 13:50:36 UTC (rev 28979)
@@ -45,6 +45,7 @@
 {
 public:
        static bool HasCompatibleDeformer(Object *ob);
+       static bool HasArmatureDeformer(Object *ob);
 
 
        BL_ModifierDeformer(BL_DeformableGameObject *gameobj,

Modified: branches/render25/source/gameengine/Ketsji/KX_Scene.cpp
===================================================================
--- branches/render25/source/gameengine/Ketsji/KX_Scene.cpp     2010-05-25 
13:33:59 UTC (rev 28978)
+++ branches/render25/source/gameengine/Ketsji/KX_Scene.cpp     2010-05-25 
13:50:36 UTC (rev 28979)
@@ -1067,12 +1067,12 @@
                        bool bHasShapeKey = blendmesh->key != NULL && 
blendmesh->key->type==KEY_RELATIVE;
                        bool bHasDvert = blendmesh->dvert != NULL;
                        bool bHasArmature = 
+                               
BL_ModifierDeformer::HasArmatureDeformer(blendobj) &&
                                parentobj &&                                    
                        // current parent is armature
                                parentobj->GetGameObjectType() == 
SCA_IObject::OBJ_ARMATURE &&
                                oldblendobj &&                                  
                        // needed for mesh deform
                                blendobj->parent &&                             
                        // original object had armature (not sure this test is 
needed)
-                               blendobj->parent->type == OB_ARMATURE && 
-                               blendobj->partype==PARSKEL && 
+                               blendobj->parent->type == OB_ARMATURE &&
                                blendmesh->dvert!=NULL;                         
                // mesh has vertex group
                        bool bHasSoftBody = (!parentobj && (blendobj->gameflag 
& OB_SOFT_BODY));
 


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

Reply via email to