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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to