[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