diff options
Diffstat (limited to 'source/blender/editors/space_view3d/space_view3d.cc')
-rw-r--r-- | source/blender/editors/space_view3d/space_view3d.cc | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/source/blender/editors/space_view3d/space_view3d.cc b/source/blender/editors/space_view3d/space_view3d.cc index 7398a109b19..345958d86ec 100644 --- a/source/blender/editors/space_view3d/space_view3d.cc +++ b/source/blender/editors/space_view3d/space_view3d.cc @@ -44,6 +44,7 @@ #include "BKE_object.h" #include "BKE_scene.h" #include "BKE_screen.h" +#include "BKE_viewer_path.h" #include "BKE_workspace.h" #include "ED_object.h" @@ -53,6 +54,7 @@ #include "ED_space_api.h" #include "ED_transform.h" #include "ED_undo.h" +#include "ED_viewer_path.hh" #include "GPU_matrix.h" @@ -322,6 +324,8 @@ static void view3d_free(SpaceLink *sl) IDP_FreeProperty(vd->shading.prop); vd->shading.prop = nullptr; } + + BKE_viewer_path_clear(&vd->viewer_path); } /* spacetype; init callback */ @@ -360,6 +364,8 @@ static SpaceLink *view3d_duplicate(SpaceLink *sl) v3dn->shading.prop = IDP_CopyProperty(v3do->shading.prop); } + BKE_viewer_path_copy(&v3dn->viewer_path, &v3do->viewer_path); + /* copy or clear inside new stuff */ return (SpaceLink *)v3dn; @@ -1319,6 +1325,16 @@ static void view3d_main_region_listener(const wmRegionListenerParams *params) /* In case the region displays workspace settings. */ ED_region_tag_redraw(region); break; + case NC_VIEWER_PATH: { + if (v3d->flag2 & V3D_SHOW_VIEWER) { + ViewLayer *view_layer = WM_window_get_active_view_layer(window); + if (Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer)) { + ED_render_view3d_update(depsgraph, window, area, true); + } + ED_region_tag_redraw(region); + } + break; + } } } @@ -1980,6 +1996,7 @@ static void view3d_id_remap(ScrArea *area, SpaceLink *slink, const struct IDRema /* Object centers in local-view aren't used, see: T52663 */ view3d_id_remap_v3d(area, slink, view3d->localvd, mappings, true); } + BKE_viewer_path_id_remap(&view3d->viewer_path, mappings); } static void view3d_blend_read_data(BlendDataReader *reader, SpaceLink *sl) @@ -2003,6 +2020,8 @@ static void view3d_blend_read_data(BlendDataReader *reader, SpaceLink *sl) BKE_screen_view3d_shading_blend_read_data(reader, &v3d->shading); BKE_screen_view3d_do_versions_250(v3d, &sl->regionbase); + + BKE_viewer_path_blend_read_data(reader, &v3d->viewer_path); } static void view3d_blend_read_lib(BlendLibReader *reader, ID *parent_id, SpaceLink *sl) @@ -2015,6 +2034,8 @@ static void view3d_blend_read_lib(BlendLibReader *reader, ID *parent_id, SpaceLi if (v3d->localvd) { BLO_read_id_address(reader, parent_id->lib, &v3d->localvd->camera); } + + BKE_viewer_path_blend_read_lib(reader, parent_id->lib, &v3d->viewer_path); } static void view3d_blend_write(BlendWriter *writer, SpaceLink *sl) @@ -2027,6 +2048,8 @@ static void view3d_blend_write(BlendWriter *writer, SpaceLink *sl) } BKE_screen_view3d_shading_blend_write(writer, &v3d->shading); + + BKE_viewer_path_blend_write(writer, &v3d->viewer_path); } void ED_spacetype_view3d(void) |