Blender V5.0
source/blender/depsgraph/intern/builder/pipeline.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2020 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "deg_builder_cache.h"
12
13struct Depsgraph;
14struct Main;
15struct Scene;
16struct ViewLayer;
17
18namespace blender::deg {
19
20struct Depsgraph;
23
24/* Base class for Depsgraph Builder pipelines.
25 *
26 * Basically it runs through the following steps:
27 * - sanity check
28 * - build nodes
29 * - build relations
30 * - finalize
31 */
33 public:
35 virtual ~AbstractBuilderPipeline() = default;
36
37 void build();
38
39 protected:
45
46 virtual std::unique_ptr<DepsgraphNodeBuilder> construct_node_builder();
47 virtual std::unique_ptr<DepsgraphRelationBuilder> construct_relation_builder();
48
49 virtual void build_step_sanity_check();
50 void build_step_nodes();
53
54 virtual void build_nodes(DepsgraphNodeBuilder &node_builder) = 0;
55 virtual void build_relations(DepsgraphRelationBuilder &relation_builder) = 0;
56};
57
58} // namespace blender::deg
virtual std::unique_ptr< DepsgraphNodeBuilder > construct_node_builder()
virtual void build_nodes(DepsgraphNodeBuilder &node_builder)=0
virtual std::unique_ptr< DepsgraphRelationBuilder > construct_relation_builder()
virtual ~AbstractBuilderPipeline()=default
virtual void build_relations(DepsgraphRelationBuilder &relation_builder)=0