[Bf-blender-cvs] [8655ed28fee] temp-dynamic-overrides: Update the viewport when changing dynamic override properties

Dalai Felinto noreply at git.blender.org
Sun May 27 19:24:00 CEST 2018


Commit: 8655ed28fee1be2d354e8c23a6a5320c694c2eba
Author: Dalai Felinto
Date:   Sun May 27 19:23:46 2018 +0200
Branches: temp-dynamic-overrides
https://developer.blender.org/rB8655ed28fee1be2d354e8c23a6a5320c694c2eba

Update the viewport when changing dynamic override properties

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

M	source/blender/editors/scene/scene_edit.c
M	source/blender/makesrna/intern/rna_dynamic_override.c
M	source/blender/makesrna/intern/rna_layer.c

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

diff --git a/source/blender/editors/scene/scene_edit.c b/source/blender/editors/scene/scene_edit.c
index b1d8e265859..afc04b45cb7 100644
--- a/source/blender/editors/scene/scene_edit.c
+++ b/source/blender/editors/scene/scene_edit.c
@@ -316,6 +316,8 @@ static void SCENE_OT_view_layer_override_set_add(wmOperatorType *ot)
 
 static int view_layer_override_set_remove_exec(bContext *C, wmOperator *op)
 {
+	Main *bmain = CTX_data_main(C);
+	Depsgraph *depsgraph = CTX_data_depsgraph(C);
 	Scene *scene = CTX_data_scene(C);
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	OverrideSet *override_set = BLI_findlink(&view_layer->override_sets, view_layer->active_override_set);
@@ -327,7 +329,9 @@ static int view_layer_override_set_remove_exec(bContext *C, wmOperator *op)
 
 	BKE_view_layer_override_set_remove(view_layer, override_set);
 
-	DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
+	DEG_graph_id_tag_update(bmain, depsgraph, &scene->id, DEG_TAG_COPY_ON_WRITE);
+	DEG_graph_id_type_tag_update(bmain, depsgraph, ID_OB, DEG_TAG_COPY_ON_WRITE);
+
 	WM_event_add_notifier(C, NC_SCENE | ND_DYN_OVERRIDES, scene);
 	return OPERATOR_FINISHED;
 }
diff --git a/source/blender/makesrna/intern/rna_dynamic_override.c b/source/blender/makesrna/intern/rna_dynamic_override.c
index 116c5031419..5168243af5d 100644
--- a/source/blender/makesrna/intern/rna_dynamic_override.c
+++ b/source/blender/makesrna/intern/rna_dynamic_override.c
@@ -49,6 +49,9 @@ const EnumPropertyItem rna_enum_dynamic_override_property_type_items[] = {
 #include "RNA_access.h"
 
 #include "BKE_layer.h"
+#include "BKE_scene.h"
+
+#include "DEG_depsgraph.h"
 
 static void rna_DynamicOverrideProperty_name_get(PointerRNA *ptr, char *value)
 {
@@ -182,6 +185,25 @@ static void rna_DynamicOverrideProperty_value_color_set(PointerRNA *ptr, const f
 	}
 }
 
+static void  rna_DynamicOverrideProperty_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+	DynamicOverrideProperty *dyn_prop = ptr->data;
+	ViewLayer *view_layer = BKE_view_layer_find_from_dynamic_override_property(scene, dyn_prop);
+	Depsgraph *depsgraph =
+	        (Depsgraph *)BKE_scene_get_depsgraph(scene,
+	                                             view_layer,
+	                                             false);
+
+	switch (dyn_prop->property_type) {
+		case DYN_OVERRIDE_PROP_TYPE_SCENE:
+			DEG_graph_id_tag_update(bmain, depsgraph, &scene->id, DEG_TAG_COPY_ON_WRITE);
+			break;
+		case DYN_OVERRIDE_PROP_TYPE_COLLECTION:
+			DEG_graph_id_type_tag_update(bmain, depsgraph, ID_OB, DEG_TAG_COPY_ON_WRITE);
+			break;
+	}
+}
+
 #else
 
 void RNA_def_dynamic_override(BlenderRNA *brna)
@@ -209,7 +231,7 @@ void RNA_def_dynamic_override(BlenderRNA *brna)
 	prop = RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", DYN_OVERRIDE_PROP_USE);
 	RNA_def_property_ui_text(prop, "Enabled", "Disable or enable the overridden property");
-	RNA_def_property_update(prop, NC_SCENE | ND_DYN_OVERRIDES, NULL);
+	RNA_def_property_update(prop, NC_SCENE | ND_DYN_OVERRIDES, "rna_DynamicOverrideProperty_update");
 
 	prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
 	RNA_def_property_enum_sdna(prop, NULL, "property_type");
@@ -235,7 +257,7 @@ void RNA_def_dynamic_override(BlenderRNA *brna)
 	RNA_def_property_enum_items(prop, rna_enum_dynamic_override_mode_items);
 	RNA_def_property_ui_text(prop, "Override Mode",
 	                         "Method of override the original values");
-	RNA_def_property_update(prop, NC_SCENE | ND_DYN_OVERRIDES, NULL);
+	RNA_def_property_update(prop, NC_SCENE | ND_DYN_OVERRIDES, "rna_DynamicOverrideProperty_update");
 
 	prop = RNA_def_property(srna, "data_type", PROP_ENUM, PROP_NONE);
 	RNA_def_property_enum_items(prop, rna_enum_property_type_items);
@@ -254,21 +276,21 @@ void RNA_def_dynamic_override(BlenderRNA *brna)
 	RNA_def_property_boolean_funcs(prop,
 	                               "rna_DynamicOverrideProperty_value_boolean_get",
 	                               "rna_DynamicOverrideProperty_value_boolean_set");
-	RNA_def_property_update(prop, NC_SCENE | ND_DYN_OVERRIDES, NULL);
+	RNA_def_property_update(prop, NC_SCENE | ND_DYN_OVERRIDES, "rna_DynamicOverrideProperty_update");
 
 	prop = RNA_def_property(srna, "value_int", PROP_INT, PROP_NONE);
 	RNA_def_property_int_funcs(prop,
 	                           "rna_DynamicOverrideProperty_value_int_get",
 	                           "rna_DynamicOverrideProperty_value_int_set",
 	                           "rna_DynamicOverrideProperty_value_int_range");
-	RNA_def_property_update(prop, NC_SCENE | ND_DYN_OVERRIDES, NULL);
+	RNA_def_property_update(prop, NC_SCENE | ND_DYN_OVERRIDES, "rna_DynamicOverrideProperty_update");
 
 	prop = RNA_def_property(srna, "value_float", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_float_funcs(prop,
 	                             "rna_DynamicOverrideProperty_value_float_get",
 	                             "rna_DynamicOverrideProperty_value_float_set",
 	                             "rna_DynamicOverrideProperty_value_float_range");
-	RNA_def_property_update(prop, NC_SCENE | ND_DYN_OVERRIDES, NULL);
+	RNA_def_property_update(prop, NC_SCENE | ND_DYN_OVERRIDES, "rna_DynamicOverrideProperty_update");
 
 	prop = RNA_def_property(srna, "value_color", PROP_FLOAT, PROP_COLOR);
 	RNA_def_property_flag(prop, PROP_DYNAMIC);
@@ -278,7 +300,7 @@ void RNA_def_dynamic_override(BlenderRNA *brna)
 	                             "rna_DynamicOverrideProperty_value_color_get",
 	                             "rna_DynamicOverrideProperty_value_color_set",
 	                             NULL);
-	RNA_def_property_update(prop, NC_SCENE | ND_DYN_OVERRIDES, NULL);
+	RNA_def_property_update(prop, NC_SCENE | ND_DYN_OVERRIDES, "rna_DynamicOverrideProperty_update");
 }
 
 #endif
diff --git a/source/blender/makesrna/intern/rna_layer.c b/source/blender/makesrna/intern/rna_layer.c
index 185184b72dd..e56e2022901 100644
--- a/source/blender/makesrna/intern/rna_layer.c
+++ b/source/blender/makesrna/intern/rna_layer.c
@@ -294,6 +294,19 @@ static void rna_OverrideSet_name_set(PointerRNA *ptr, const char *value)
 	               sizeof(override_set->name));
 }
 
+static void  rna_OverrideSet_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+	OverrideSet *override_set = (OverrideSet *)ptr->data;
+	ViewLayer *view_layer = BKE_view_layer_find_from_override_set(scene, override_set);
+	Depsgraph *depsgraph =
+	        (Depsgraph *)BKE_scene_get_depsgraph(scene,
+	                                             view_layer,
+	                                             false);
+
+	DEG_graph_id_tag_update(bmain, depsgraph, &scene->id, DEG_TAG_COPY_ON_WRITE);
+	DEG_graph_id_type_tag_update(bmain, depsgraph, ID_OB, DEG_TAG_COPY_ON_WRITE);
+}
+
 static int rna_OverrideSets_active_override_set_index_get(PointerRNA *ptr)
 {
 	ViewLayer *view_layer = (ViewLayer *)ptr->data;
@@ -550,7 +563,7 @@ static void rna_def_override_set(BlenderRNA *brna)
 	prop = RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", DYN_OVERRIDE_SET_USE);
 	RNA_def_property_ui_text(prop, "Enabled", "Disable or enable the override set");
-	RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL);
+	RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, "rna_OverrideSet_update");
 
 	prop = RNA_def_property(srna, "affected_collections", PROP_COLLECTION, PROP_NONE);
 	RNA_def_property_collection_sdna(prop, NULL, "affected_collections", NULL);



More information about the Bf-blender-cvs mailing list