[Bf-blender-cvs] [4a60c4746dd] master: Fix T101272: Missing view layer updates handling collections via python.
Jeroen Bakker
noreply at git.blender.org
Tue Sep 27 11:59:25 CEST 2022
Commit: 4a60c4746ddf3ebd3bc236ddb678aae5a7fdad6a
Author: Jeroen Bakker
Date: Tue Sep 27 11:57:34 2022 +0200
Branches: master
https://developer.blender.org/rB4a60c4746ddf3ebd3bc236ddb678aae5a7fdad6a
Fix T101272: Missing view layer updates handling collections via python.
Fixed by ensuring the view layer is up to date.
===================================================================
M source/blender/makesrna/intern/rna_layer.c
===================================================================
diff --git a/source/blender/makesrna/intern/rna_layer.c b/source/blender/makesrna/intern/rna_layer.c
index ae0366bebad..427a38094be 100644
--- a/source/blender/makesrna/intern/rna_layer.c
+++ b/source/blender/makesrna/intern/rna_layer.c
@@ -369,6 +369,41 @@ static bool rna_LayerCollection_has_selected_objects(LayerCollection *lc,
return false;
}
+static bool rna_LayerCollection_children_lookupint(struct PointerRNA *ptr,
+ int key,
+ struct PointerRNA *r_ptr)
+{
+ Scene *scene = (Scene *)ptr->owner_id;
+ LayerCollection *lc = (LayerCollection *)ptr->data;
+ ViewLayer *view_layer = BKE_view_layer_find_from_collection(scene, lc);
+ BKE_view_layer_synced_ensure(scene, view_layer);
+
+ LayerCollection *child = BLI_findlink(&lc->layer_collections, key);
+ if (!child) {
+ return false;
+ }
+ RNA_pointer_create(ptr->owner_id, &RNA_LayerCollection, child, r_ptr);
+ return true;
+}
+
+static bool rna_LayerCollection_children_lookupstring(struct PointerRNA *ptr,
+ const char *key,
+ struct PointerRNA *r_ptr)
+{
+ Scene *scene = (Scene *)ptr->owner_id;
+ LayerCollection *lc = (LayerCollection *)ptr->data;
+ ViewLayer *view_layer = BKE_view_layer_find_from_collection(scene, lc);
+ BKE_view_layer_synced_ensure(scene, view_layer);
+
+ LISTBASE_FOREACH (LayerCollection *, child, &lc->layer_collections) {
+ if (STREQ(child->collection->id.name + 2, key)) {
+ RNA_pointer_create(ptr->owner_id, &RNA_LayerCollection, child, r_ptr);
+ return true;
+ }
+ }
+ return false;
+}
+
#else
static void rna_def_layer_collection(BlenderRNA *brna)
@@ -399,6 +434,15 @@ static void rna_def_layer_collection(BlenderRNA *brna)
RNA_def_property_collection_sdna(prop, NULL, "layer_collections", NULL);
RNA_def_property_struct_type(prop, "LayerCollection");
RNA_def_property_ui_text(prop, "Children", "Child layer collections");
+ RNA_def_property_collection_funcs(prop,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "rna_LayerCollection_children_lookupint",
+ "rna_LayerCollection_children_lookupstring",
+ NULL);
/* Restriction flags. */
prop = RNA_def_property(srna, "exclude", PROP_BOOLEAN, PROP_NONE);
More information about the Bf-blender-cvs
mailing list