36void ModifierComputeContext::print_current_in_line(std::ostream &stream)
const
58 return tree_->node_by_id(node_id_);
63void NodeComputeContext::print_current_in_line(std::ostream &stream)
const
66 if (
const bNode *
node = tree_->node_by_id(node_id_)) {
71 stream <<
"Node ID: " << node_id_;
91void SimulationZoneComputeContext::print_current_in_line(std::ostream &stream)
const
93 stream <<
"Simulation Zone ID: " << output_node_id_;
115void RepeatZoneComputeContext::print_current_in_line(std::ostream &stream)
const
117 stream <<
"Repeat Zone ID: " << output_node_id_;
137void ForeachGeometryElementZoneComputeContext::print_current_in_line(std::ostream &stream)
const
139 stream <<
"Foreach Geometry Element Zone ID: " << output_node_id_;
153 if (!closure_source_location_) {
158 if (
const auto *evaluate_closure_compute_context =
161 if (!evaluate_closure_compute_context->closure_source_location_) {
164 if (evaluate_closure_compute_context->closure_source_location_->tree ==
165 closure_source_location_->tree &&
166 evaluate_closure_compute_context->closure_source_location_->closure_output_node_id ==
167 closure_source_location_->closure_output_node_id)
194void OperatorComputeContext::print_current_in_line(std::ostream &stream)
const
196 stream <<
"Operator";
209void ShaderComputeContext::print_current_in_line(std::ostream &stream)
const
220 return *modifier_contexts_cache_.lookup_or_add_cb(
226 const int modifier_uid)
228 return *modifier_contexts_cache_.lookup_or_add_cb(std::pair{parent, modifier_uid}, [&]() {
235 return *operator_contexts_cache_.lookup_or_add_cb(
242 return *operator_contexts_cache_.lookup_or_add_cb(
249 return *shader_contexts_cache_.lookup_or_add_cb(
257 return *group_node_contexts_cache_.lookup_or_add_cb(std::pair{parent, node_id}, [&]() {
265 return *simulation_zone_contexts_cache_.lookup_or_add_cb(
266 std::pair{parent, output_node_id}, [&]() {
274 return *simulation_zone_contexts_cache_.lookup_or_add_cb(
275 std::pair{parent, output_node.
identifier}, [&]() {
284 return *repeat_zone_contexts_cache_.lookup_or_add_cb(
285 std::pair{parent, std::pair{output_node_id, iteration}}, [&]() {
287 parent, output_node_id, iteration);
292 const bNode &output_node,
295 return *repeat_zone_contexts_cache_.lookup_or_add_cb(
296 std::pair{parent, std::pair{output_node.
identifier, iteration}}, [&]() {
306 return *foreach_geometry_element_zone_contexts_cache_.lookup_or_add_cb(
307 std::pair{parent, std::pair{output_node_id, index}}, [&]() {
309 parent, output_node_id, index);
315 const bNode &output_node,
318 return *foreach_geometry_element_zone_contexts_cache_.lookup_or_add_cb(
319 std::pair{parent, std::pair{output_node.
identifier, index}}, [&]() {
321 parent, output_node, index);
329 const std::optional<nodes::ClosureSourceLocation> &closure_source_location)
331 return *evaluate_closure_contexts_cache_.lookup_or_add_cb(std::pair{parent, node_id}, [&]() {
333 parent, node_id,
tree, closure_source_location);
const char * BKE_id_name(const ID &id)
ComputeContext(const ComputeContext *parent)
const ComputeContext * parent() const
const ComputeContext * parent_
const EvaluateClosureComputeContext & for_evaluate_closure(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr, const std::optional< nodes::ClosureSourceLocation > &closure_source_location=std::nullopt)
const ModifierComputeContext & for_modifier(const ComputeContext *parent, const NodesModifierData &nmd)
const GroupNodeComputeContext & for_group_node(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr)
const ForeachGeometryElementZoneComputeContext & for_foreach_geometry_element_zone(const ComputeContext *parent, int32_t output_node_id, int index)
const RepeatZoneComputeContext & for_repeat_zone(const ComputeContext *parent, int32_t output_node_id, int iteration)
const ShaderComputeContext & for_shader(const ComputeContext *parent, const bNodeTree *tree)
const OperatorComputeContext & for_operator(const ComputeContext *parent)
const SimulationZoneComputeContext & for_simulation_zone(const ComputeContext *parent, int output_node_id)
const T & for_any_uncached(Args &&...args)
EvaluateClosureComputeContext(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr, const std::optional< nodes::ClosureSourceLocation > &closure_source_location=std::nullopt)
bool is_recursive() const
std::optional< nodes::ClosureSourceLocation > closure_source_location() const
ForeachGeometryElementZoneComputeContext(const ComputeContext *parent, int32_t output_node_id, int index)
int32_t output_node_id() const
const NodesModifierData * nmd() const
ModifierComputeContext(const ComputeContext *parent, const NodesModifierData &nmd)
const bNodeTree * tree() const
const bNode * node() const
NodeComputeContext(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr)
const bNodeTree * tree() const
RepeatZoneComputeContext(const ComputeContext *parent, int32_t output_node_id, int iteration)
int32_t output_node_id() const
ShaderComputeContext(const ComputeContext *parent=nullptr, const bNodeTree *tree=nullptr)
int32_t output_node_id() const
SimulationZoneComputeContext(const ComputeContext *parent, int output_node_id)
std::string node_label(const bNodeTree &ntree, const bNode &node)
static ComputeContextHash from(const ComputeContext *parent, const char(&type_str)[N], Args &&...args)