From e623d073628120b427994e0c45206a5ee4dd1915 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 3 Nov 2023 15:41:05 +0100 Subject: [PATCH] Fix missing relations built for camera referenced by markers A missing part since PR #110139: the nodes and relations builders needs to be in-sync and build the same objects. The relations builder was missing relations building for camera referenced by markers. Pull Request: https://projects.blender.org/blender/blender/pulls/114443 --- .../depsgraph/intern/builder/deg_builder_relations.h | 1 + .../intern/builder/deg_builder_relations_scene.cc | 12 ++++++++++++ .../builder/deg_builder_relations_view_layer.cc | 4 +--- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.h b/source/blender/depsgraph/intern/builder/deg_builder_relations.h index 4eafd66b0c0..1c2ba7298e2 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.h +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.h @@ -125,6 +125,7 @@ class DepsgraphRelationBuilder : public DepsgraphBuilder { virtual void build_idproperties(IDProperty *id_property); + virtual void build_scene_camera(Scene *scene); virtual void build_scene_render(Scene *scene, ViewLayer *view_layer); virtual void build_scene_parameters(Scene *scene); virtual void build_scene_compositor(Scene *scene); diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations_scene.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations_scene.cc index 0b117867c9f..166607a6d45 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations_scene.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations_scene.cc @@ -32,6 +32,18 @@ void DepsgraphRelationBuilder::build_scene_render(Scene *scene, ViewLayer *view_ } } +void DepsgraphRelationBuilder::build_scene_camera(Scene *scene) +{ + if (scene->camera != nullptr) { + build_object(scene->camera); + } + LISTBASE_FOREACH (TimeMarker *, marker, &scene->markers) { + if (!ELEM(marker->camera, nullptr, scene->camera)) { + build_object(marker->camera); + } + } +} + void DepsgraphRelationBuilder::build_scene_parameters(Scene *scene) { if (built_map_.checkIsBuiltAndTag(scene, BuilderMap::TAG_PARAMETERS)) { diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc index 287050ebe01..203d26bd346 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc @@ -118,9 +118,7 @@ void DepsgraphRelationBuilder::build_view_layer(Scene *scene, build_view_layer_collections(view_layer); - if (scene->camera != nullptr) { - build_object(scene->camera); - } + build_scene_camera(scene); /* Rigidbody. */ if (scene->rigidbody_world != nullptr) { build_rigidbody(scene);