[Bf-blender-cvs] [00d2237d2a3] master: Fix T57371: Generative modifiers in editmode display vertex group weights

Clément Foucault noreply at git.blender.org
Fri Jan 11 20:09:47 CET 2019


Commit: 00d2237d2a3948457c468bd393276680997f8371
Author: Clément Foucault
Date:   Fri Jan 11 20:02:00 2019 +0100
Branches: master
https://developer.blender.org/rB00d2237d2a3948457c468bd393276680997f8371

Fix T57371: Generative modifiers in editmode display vertex group weights

In a better way...

6dbfd7f6d6bc would make the final vertex weights always calculated in
edit mode. Now it's only if the option is enabled.

===================================================================

M	source/blender/editors/include/ED_view3d.h
M	source/blender/editors/render/render_opengl.c
M	source/blender/editors/space_view3d/view3d_draw_legacy.c
M	source/blender/windowmanager/intern/wm_event_system.c

===================================================================

diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h
index 60220e8797e..748fb180c1a 100644
--- a/source/blender/editors/include/ED_view3d.h
+++ b/source/blender/editors/include/ED_view3d.h
@@ -485,8 +485,8 @@ char ED_view3d_lock_view_from_index(int index);
 char ED_view3d_axis_view_opposite(char view);
 bool ED_view3d_lock(struct RegionView3D *rv3d);
 
-uint64_t ED_view3d_datamask(const struct Scene *scene, const struct View3D *v3d);
-uint64_t ED_view3d_screen_datamask(const struct Scene *scene, const struct bScreen *screen);
+uint64_t ED_view3d_datamask(const struct bContext *C, const struct Scene *scene, const struct View3D *v3d);
+uint64_t ED_view3d_screen_datamask(const struct bContext *C, const struct Scene *scene, const struct bScreen *screen);
 
 bool ED_view3d_offset_lock_check(const struct View3D *v3d, const struct RegionView3D *rv3d);
 void ED_view3d_persp_switch_from_camera(
diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c
index 8006f5071d1..043265d0d71 100644
--- a/source/blender/editors/render/render_opengl.c
+++ b/source/blender/editors/render/render_opengl.c
@@ -606,7 +606,7 @@ static bool screen_opengl_render_init(bContext *C, wmOperator *op)
 		oglrender->rv3d = oglrender->ar->regiondata;
 
 		/* MUST be cleared on exit */
-		oglrender->scene->customdata_mask_modal = ED_view3d_datamask(oglrender->scene, oglrender->v3d);
+		oglrender->scene->customdata_mask_modal = ED_view3d_datamask(C, oglrender->scene, oglrender->v3d);
 
 		/* apply immediately in case we're rendering from a script,
 		 * running notifiers again will overwrite */
diff --git a/source/blender/editors/space_view3d/view3d_draw_legacy.c b/source/blender/editors/space_view3d/view3d_draw_legacy.c
index 1dce9cecc27..04e19efdb20 100644
--- a/source/blender/editors/space_view3d/view3d_draw_legacy.c
+++ b/source/blender/editors/space_view3d/view3d_draw_legacy.c
@@ -888,7 +888,7 @@ void ED_view3d_draw_depth_gpencil(
 
 /* *********************** customdata **************** */
 
-CustomDataMask ED_view3d_datamask(const Scene *UNUSED(scene), const View3D *v3d)
+CustomDataMask ED_view3d_datamask(const bContext *C, const Scene *UNUSED(scene), const View3D *v3d)
 {
 	CustomDataMask mask = 0;
 	const int drawtype = view3d_effective_drawtype(v3d);
@@ -900,18 +900,24 @@ CustomDataMask ED_view3d_datamask(const Scene *UNUSED(scene), const View3D *v3d)
 			mask |= CD_MASK_ORCO;
 	}
 
+	if ((CTX_data_mode_enum(C) == CTX_MODE_EDIT_MESH) &&
+	    (v3d->overlay.edit_flag & V3D_OVERLAY_EDIT_WEIGHT))
+	{
+		mask |= CD_MASK_MDEFORMVERT;
+	}
+
 	return mask;
 }
 
 /* goes over all modes and view3d settings */
-CustomDataMask ED_view3d_screen_datamask(const Scene *scene, const bScreen *screen)
+CustomDataMask ED_view3d_screen_datamask(const bContext *C, const Scene *scene, const bScreen *screen)
 {
 	CustomDataMask mask = CD_MASK_BAREMESH;
 
 	/* check if we need tfaces & mcols due to view mode */
 	for (const ScrArea *sa = screen->areabase.first; sa; sa = sa->next) {
 		if (sa->spacetype == SPACE_VIEW3D) {
-			mask |= ED_view3d_datamask(scene, sa->spacedata.first);
+			mask |= ED_view3d_datamask(C, scene, sa->spacedata.first);
 		}
 	}
 
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index c4d537cace9..d102fdf8765 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -314,7 +314,7 @@ void wm_event_do_depsgraph(bContext *C)
 		const Scene *scene = WM_window_get_active_scene(win);
 		const bScreen *screen = WM_window_get_active_screen(win);
 
-		win_combine_v3d_datamask |= ED_view3d_screen_datamask(scene, screen);
+		win_combine_v3d_datamask |= ED_view3d_screen_datamask(C, scene, screen);
 	}
 	/* Update all the dependency graphs of visible vew layers. */
 	for (wmWindow *win = wm->windows.first; win; win = win->next) {



More information about the Bf-blender-cvs mailing list