diff options
author | Bastien Montagne <bastien@blender.org> | 2022-01-31 17:29:02 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2022-01-31 17:29:02 +0300 |
commit | 8cc6623c18e2d83ba114889a0d307a342bfd42b0 (patch) | |
tree | cfcc904f634d9cb67c5c5920e5d2720cdea68973 | |
parent | 46abc6ce25a7aee35f3d9a89c839d898d40694ab (diff) | |
parent | 180a68c1dcc7f18d746b43803e34119f31fc323d (diff) |
Merge branch 'blender-v3.1-release'
-rw-r--r-- | source/blender/makesrna/intern/rna_internal.h | 7 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_layer.c | 19 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_scene.c | 15 |
3 files changed, 37 insertions, 4 deletions
diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index 4687e86916e..d4de20b5328 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -369,6 +369,13 @@ void rna_ViewLayer_active_aov_index_range( PointerRNA *ptr, int *min, int *max, int *softmin, int *softmax); int rna_ViewLayer_active_aov_index_get(PointerRNA *ptr); void rna_ViewLayer_active_aov_index_set(PointerRNA *ptr, int value); +/** Set `r_rna_path` with the base viewlayer path. + * `rna_path_buffer_size` should be at least `sizeof(ViewLayer.name) * 3`. + * \return actual length of the generayted RNA path. + */ +size_t rna_ViewLayer_path_buffer_get(struct ViewLayer *view_layer, + char *r_rna_path, + const size_t rna_path_buffer_size); /* named internal so as not to conflict with obj.update() rna func */ void rna_Object_internal_update_data(struct Main *bmain, diff --git a/source/blender/makesrna/intern/rna_layer.c b/source/blender/makesrna/intern/rna_layer.c index b02a5c8dc1e..278d611cc41 100644 --- a/source/blender/makesrna/intern/rna_layer.c +++ b/source/blender/makesrna/intern/rna_layer.c @@ -112,13 +112,24 @@ static void rna_LayerObjects_active_object_set(PointerRNA *ptr, } } +size_t rna_ViewLayer_path_buffer_get(ViewLayer *view_layer, + char *r_rna_path, + const size_t rna_path_buffer_size) +{ + char name_esc[sizeof(view_layer->name) * 2]; + BLI_str_escape(name_esc, view_layer->name, sizeof(name_esc)); + + return BLI_snprintf_rlen(r_rna_path, rna_path_buffer_size, "view_layers[\"%s\"]", name_esc); +} + static char *rna_ViewLayer_path(PointerRNA *ptr) { - ViewLayer *srl = (ViewLayer *)ptr->data; - char name_esc[sizeof(srl->name) * 2]; + ViewLayer *view_layer = (ViewLayer *)ptr->data; + char rna_path[sizeof(view_layer->name) * 3]; + + rna_ViewLayer_path_buffer_get(view_layer, rna_path, sizeof(rna_path)); - BLI_str_escape(name_esc, srl->name, sizeof(name_esc)); - return BLI_sprintfN("view_layers[\"%s\"]", name_esc); + return BLI_strdup(rna_path); } static IDProperty **rna_ViewLayer_idprops(PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 7f9890e492d..064dc255811 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -1769,6 +1769,20 @@ void rna_ViewLayer_pass_update(Main *bmain, Scene *activescene, PointerRNA *ptr) rna_Scene_glsl_update(bmain, activescene, ptr); } +static char *rna_ViewLayerEEVEE_path(PointerRNA *ptr) +{ + ViewLayerEEVEE *view_layer_eevee = (ViewLayerEEVEE *)ptr->data; + ViewLayer *view_layer = (ViewLayer *)((uint8_t *)view_layer_eevee - offsetof(ViewLayer, eevee)); + char rna_path[sizeof(view_layer->name) * 3]; + + const size_t view_layer_path_len = rna_ViewLayer_path_buffer_get( + view_layer, rna_path, sizeof(rna_path)); + + BLI_strncpy(rna_path + view_layer_path_len, ".eevee", sizeof(rna_path) - view_layer_path_len); + + return BLI_strdup(rna_path); +} + static char *rna_SceneRenderView_path(PointerRNA *ptr) { SceneRenderView *srv = (SceneRenderView *)ptr->data; @@ -4019,6 +4033,7 @@ static void rna_def_view_layer_eevee(BlenderRNA *brna) StructRNA *srna; PropertyRNA *prop; srna = RNA_def_struct(brna, "ViewLayerEEVEE", NULL); + RNA_def_struct_path_func(srna, "rna_ViewLayerEEVEE_path"); RNA_def_struct_ui_text(srna, "Eevee Settings", "View layer settings for Eevee"); prop = RNA_def_property(srna, "use_pass_volume_direct", PROP_BOOLEAN, PROP_NONE); |