Blender V4.5
BKE_compute_contexts.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
18
19#include <optional>
20
22
24
25struct bNode;
26struct bNodeTree;
28
29namespace blender::nodes {
30class Closure;
31}
32
33namespace blender::bke {
34
36 private:
38 int modifier_uid_;
40 const NodesModifierData *nmd_ = nullptr;
41
42 public:
45
46 int modifier_uid() const
47 {
48 return modifier_uid_;
49 }
50
51 const NodesModifierData *nmd() const
52 {
53 return nmd_;
54 }
55
56 private:
57 ComputeContextHash compute_hash() const override;
58 void print_current_in_line(std::ostream &stream) const override;
59};
60
62 private:
63 int32_t node_id_;
64
66 const bNodeTree *tree_ = nullptr;
67
68 public:
71 const bNodeTree *tree = nullptr);
72
74 {
75 return node_id_;
76 }
77
78 const bNodeTree *tree() const
79 {
80 return tree_;
81 }
82
83 const bNode *node() const;
84
85 private:
86 ComputeContextHash compute_hash() const override;
87 void print_current_in_line(std::ostream &stream) const override;
88};
89
94
96 private:
97 int32_t output_node_id_;
98
99 public:
102
104 {
105 return output_node_id_;
106 }
107
108 private:
109 ComputeContextHash compute_hash() const override;
110 void print_current_in_line(std::ostream &stream) const override;
111};
112
114 private:
115 int32_t output_node_id_;
116 int iteration_;
117
118 public:
121
123 {
124 return output_node_id_;
125 }
126
127 int iteration() const
128 {
129 return iteration_;
130 }
131
132 private:
133 ComputeContextHash compute_hash() const override;
134 void print_current_in_line(std::ostream &stream) const override;
135};
136
138 private:
139 int32_t output_node_id_;
140 int index_;
141
142 public:
145 int index);
147 const bNode &node,
148 int index);
149
151 {
152 return output_node_id_;
153 }
154
155 int index() const
156 {
157 return index_;
158 }
159
160 private:
161 ComputeContextHash compute_hash() const override;
162 void print_current_in_line(std::ostream &stream) const override;
163};
164
166 private:
167 std::optional<nodes::ClosureSourceLocation> closure_source_location_;
168
169 public:
171 const ComputeContext *parent,
173 const bNodeTree *tree = nullptr,
174 const std::optional<nodes::ClosureSourceLocation> &closure_source_location = std::nullopt);
175
176 std::optional<nodes::ClosureSourceLocation> closure_source_location() const
177 {
178 return closure_source_location_;
179 }
180};
181
183 private:
185 const bNodeTree *tree_ = nullptr;
186
187 public:
191
192 const bNodeTree *tree() const
193 {
194 return tree_;
195 }
196
197 private:
198 ComputeContextHash compute_hash() const override;
199 void print_current_in_line(std::ostream &stream) const override;
200};
201
202} // namespace blender::bke
ComputeContext(const ComputeContext *parent)
const ComputeContext * parent() const
EvaluateClosureComputeContext(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr, const std::optional< nodes::ClosureSourceLocation > &closure_source_location=std::nullopt)
std::optional< nodes::ClosureSourceLocation > closure_source_location() const
ForeachGeometryElementZoneComputeContext(const ComputeContext *parent, int32_t output_node_id, int index)
NodeComputeContext(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr)
const NodesModifierData * nmd() const
ModifierComputeContext(const ComputeContext *parent, const NodesModifierData &nmd)
NodeComputeContext(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr)
RepeatZoneComputeContext(const ComputeContext *parent, int32_t output_node_id, int iteration)
SimulationZoneComputeContext(const ComputeContext *parent, int output_node_id)