[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32259] trunk/blender/source: Fix #23785: in the game engine, if an object had an armature modifier + another

Brecht Van Lommel brechtvanlommel at pandora.be
Sat Oct 2 18:42:12 CEST 2010


Revision: 32259
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32259
Author:   blendix
Date:     2010-10-02 18:42:12 +0200 (Sat, 02 Oct 2010)

Log Message:
-----------
Fix #23785: in the game engine, if an object had an armature modifier + another
modifier, it would apply the armature deformation twice.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
    trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.cpp

Modified: trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c	2010-10-02 16:29:58 UTC (rev 32258)
+++ trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c	2010-10-02 16:42:12 UTC (rev 32259)
@@ -1671,9 +1671,20 @@
 	int numVerts = me->totvert;
 	int required_mode;
 	int isPrevDeform= FALSE;
+	int skipVirtualArmature = (useDeform < 0);
 
-	md = firstmd = (useDeform<0) ? ob->modifiers.first : modifiers_getVirtualModifierList(ob);
+	if(!skipVirtualArmature) {
+		firstmd = modifiers_getVirtualModifierList(ob);
+	}
+	else {
+		/* game engine exception */
+		firstmd = ob->modifiers.first;
+		if(firstmd && firstmd->type == eModifierType_Armature)
+			firstmd = firstmd->next;
+	}
 
+	md = firstmd;
+
 	modifiers_clearErrors(ob);
 
 	if(useRenderParams) required_mode = eModifierMode_Render;

Modified: trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.cpp	2010-10-02 16:29:58 UTC (rev 32258)
+++ trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.cpp	2010-10-02 16:42:12 UTC (rev 32259)
@@ -127,11 +127,10 @@
 	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;
-	}
+	ModifierData* md = (ModifierData*)ob->modifiers.first;
+	if(md->type == eModifierType_Armature )
+		return true;
+
 	return false;
 }
 





More information about the Bf-blender-cvs mailing list