[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58009] trunk/blender/source/blender: fix for [#35911] wasn't complete, while weigths would show in editmode, weights that were modified by a weight modifier wouldn't.

Campbell Barton ideasman42 at gmail.com
Fri Jul 5 00:24:40 CEST 2013


Revision: 58009
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58009
Author:   campbellbarton
Date:     2013-07-04 22:24:39 +0000 (Thu, 04 Jul 2013)
Log Message:
-----------
fix for [#35911] wasn't complete, while weigths would show in editmode, weights that were modified by a weight modifier wouldn't.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
    trunk/blender/source/blender/blenkernel/intern/modifier.c
    trunk/blender/source/blender/editors/space_view3d/drawobject.c

Modified: trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c	2013-07-04 21:49:48 UTC (rev 58008)
+++ trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c	2013-07-04 22:24:39 UTC (rev 58009)
@@ -1945,10 +1945,10 @@
 static void editbmesh_calc_modifiers(Scene *scene, Object *ob, BMEditMesh *em, DerivedMesh **cage_r,
                                      DerivedMesh **final_r,
                                      CustomDataMask dataMask)
-{
+	{
 	ModifierData *md, *previewmd = NULL;
 	float (*deformedVerts)[3] = NULL;
-	CustomDataMask mask, previewmask = 0;
+	CustomDataMask mask, previewmask = 0, append_mask = 0;
 	DerivedMesh *dm, *orcodm = NULL;
 	int i, numVerts = 0, cageIndex = modifiers_getCageIndex(scene, ob, NULL, 1);
 	CDMaskLink *datamasks, *curr;
@@ -2083,6 +2083,7 @@
 			}
 
 			/* set the DerivedMesh to only copy needed data */
+			mask |= append_mask;
 			mask = curr->mask; /* CD_MASK_ORCO may have been cleared above */
 
 			DM_set_only_copy(dm, mask | CD_MASK_ORIGINDEX);
@@ -2112,6 +2113,12 @@
 			}
 		}
 
+		/* In case of active preview modifier, make sure preview mask remains for following modifiers. */
+		if ((md == previewmd) && (do_mod_wmcol)) {
+			DM_update_weight_mcol(ob, dm, draw_flag, NULL, 0, NULL);
+			append_mask |= CD_MASK_PREVIEW_MLOOPCOL;
+		}
+
 		if (cage_r && i == cageIndex) {
 			if (dm && deformedVerts) {
 				*cage_r = CDDM_copy(dm);

Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c	2013-07-04 21:49:48 UTC (rev 58008)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c	2013-07-04 22:24:39 UTC (rev 58009)
@@ -421,7 +421,7 @@
 {
 	ModifierData *tmp_md = NULL;
 
-	if (required_mode != eModifierMode_Realtime)
+	if ((required_mode & ~eModifierMode_Editmode) != eModifierMode_Realtime)
 		return tmp_md;
 
 	/* Find the latest modifier in stack generating preview. */

Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawobject.c	2013-07-04 21:49:48 UTC (rev 58008)
+++ trunk/blender/source/blender/editors/space_view3d/drawobject.c	2013-07-04 22:24:39 UTC (rev 58009)
@@ -3020,7 +3020,7 @@
 	BMEdge *eed_act = NULL;
 	BMVert *eve_act = NULL;
 	
-	if (cageDM)  BLI_assert(!(cageDM->dirty & DM_DIRTY_NORMALS));
+	// if (cageDM)  BLI_assert(!(cageDM->dirty & DM_DIRTY_NORMALS));
 	if (finalDM) BLI_assert(!(finalDM->dirty & DM_DIRTY_NORMALS));
 
 	if (em->bm->selected.last) {




More information about the Bf-blender-cvs mailing list