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