[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28979] branches/render25/source: Render Branch: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/ blender -r28971:28978

Brecht Van Lommel brecht at blender.org
Tue May 25 15:50:36 CEST 2010


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));
 





More information about the Bf-blender-cvs mailing list