[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25230] trunk/blender/source/blender: Fix for [#20249] duplicating a mesh in edit mode with a lattice modifier

Matt Ebb matt at mke3.net
Wed Dec 9 02:53:04 CET 2009


Revision: 25230
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25230
Author:   broken
Date:     2009-12-09 02:53:04 +0100 (Wed, 09 Dec 2009)

Log Message:
-----------
Fix for [#20249] duplicating a mesh in edit mode with a lattice modifier

Removed lattice and curve modifiers from being correctable for crazy space - it didn't work and was giving weird results.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_modifier.h
    trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
    trunk/blender/source/blender/blenkernel/intern/modifier.c
    trunk/blender/source/blender/editors/transform/transform_conversions.c

Modified: trunk/blender/source/blender/blenkernel/BKE_modifier.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_modifier.h	2009-12-09 00:45:50 UTC (rev 25229)
+++ trunk/blender/source/blender/blenkernel/BKE_modifier.h	2009-12-09 01:53:04 UTC (rev 25230)
@@ -280,7 +280,7 @@
 int           modifier_dependsOnTime(struct ModifierData *md);
 int           modifier_supportsMapping(struct ModifierData *md);
 int           modifier_couldBeCage(struct ModifierData *md);
-int           modifier_isDeformer(struct ModifierData *md);
+int           modifier_isCorrectableDeformed(struct ModifierData *md);
 int			  modifier_sameTopology(ModifierData *md);
 int           modifier_isEnabled(struct ModifierData *md, int required_mode);
 void          modifier_setError(struct ModifierData *md, char *format, ...);
@@ -303,7 +303,7 @@
 struct Object *modifiers_isDeformedByArmature(struct Object *ob);
 struct Object *modifiers_isDeformedByLattice(struct Object *ob);
 int           modifiers_usesArmature(struct Object *ob, struct bArmature *arm);
-int           modifiers_isDeformed(struct Scene *scene, struct Object *ob);
+int           modifiers_isCorrectableDeformed(struct Scene *scene, struct Object *ob);
 void          modifier_freeTemporaryData(struct ModifierData *md);
 
 int           modifiers_indexInObject(struct Object *ob, struct ModifierData *md);

Modified: trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c	2009-12-09 00:45:50 UTC (rev 25229)
+++ trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c	2009-12-09 01:53:04 UTC (rev 25230)
@@ -2513,7 +2513,7 @@
 	}
 
 	for(; md && i <= cageIndex; md = md->next, i++)
-		if(editmesh_modifier_is_enabled(md, dm) && modifier_isDeformer(md))
+		if(editmesh_modifier_is_enabled(md, dm) && modifier_isCorrectableDeformed(md))
 			numleft++;
 
 	if(dm)

Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c	2009-12-09 00:45:50 UTC (rev 25229)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c	2009-12-09 01:53:04 UTC (rev 25230)
@@ -9151,15 +9151,15 @@
 }
 
 /* Takes an object and returns its first selected lattice, else just its
-* armature
-* This should work for multiple armatures per object
+* lattice
+* This should work for multiple lattics per object
 */
 Object *modifiers_isDeformedByLattice(Object *ob)
 {
 	ModifierData *md = modifiers_getVirtualModifierList(ob);
 	LatticeModifierData *lmd= NULL;
 	
-	/* return the first selected armature, this lets us use multiple armatures
+	/* return the first selected lattice, this lets us use multiple lattices
 	*/
 	for (; md; md=md->next) {
 		if (md->type==eModifierType_Lattice) {
@@ -9192,28 +9192,24 @@
 	return 0;
 }
 
-int modifier_isDeformer(ModifierData *md)
+int modifier_isCorrectableDeformed(ModifierData *md)
 {
 	if (md->type==eModifierType_Armature)
 		return 1;
-	if (md->type==eModifierType_Curve)
-		return 1;
-	if (md->type==eModifierType_Lattice)
-		return 1;
 	if (md->type==eModifierType_ShapeKey)
 		return 1;
 	
 	return 0;
 }
 
-int modifiers_isDeformed(Scene *scene, Object *ob)
+int modifiers_isCorrectableDeformed(Scene *scene, Object *ob)
 {
 	ModifierData *md = modifiers_getVirtualModifierList(ob);
 	
 	for (; md; md=md->next) {
 		if(ob->mode==OB_MODE_EDIT && (md->mode & eModifierMode_Editmode)==0);
 		else 
-			if(modifier_isDeformer(md))
+			if(modifier_isCorrectableDeformed(md))
 				return 1;
 	}
 	return 0;

Modified: trunk/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_conversions.c	2009-12-09 00:45:50 UTC (rev 25229)
+++ trunk/blender/source/blender/editors/transform/transform_conversions.c	2009-12-09 01:53:04 UTC (rev 25230)
@@ -2212,7 +2212,7 @@
 	/* detect CrazySpace [tm] */
 	if(propmode==0) {
 		if(modifiers_getCageIndex(t->obedit, NULL, 1)>=0) {
-			if(modifiers_isDeformed(t->scene, t->obedit)) {
+			if(modifiers_isCorrectableDeformed(t->scene, t->obedit)) {
 				/* check if we can use deform matrices for modifier from the
 				   start up to stack, they are more accurate than quats */
 				totleft= editmesh_get_first_deform_matrices(t->obedit, em, &defmats, &defcos);





More information about the Bf-blender-cvs mailing list