diff options
author | Jacques Lucke <jacques@blender.org> | 2021-11-17 17:40:53 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-11-17 17:40:53 +0300 |
commit | 00a9617f92fdae6c847575d10fac8a66e8322257 (patch) | |
tree | 8b6a74ea59e6453aba0249df93378dae42b0ab43 /source/blender/modifiers/intern/MOD_nodes_evaluator.cc | |
parent | 51b8e34fb7a5c2c17b2803d006ab2df1824c59c0 (diff) |
Fix: wrong assert in geometry nodes evaluator
It only makes sense to check if all required outputs have been computed
if the node was executed at all.
Diffstat (limited to 'source/blender/modifiers/intern/MOD_nodes_evaluator.cc')
-rw-r--r-- | source/blender/modifiers/intern/MOD_nodes_evaluator.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/modifiers/intern/MOD_nodes_evaluator.cc b/source/blender/modifiers/intern/MOD_nodes_evaluator.cc index 70d2bd9c7f5..badd633f648 100644 --- a/source/blender/modifiers/intern/MOD_nodes_evaluator.cc +++ b/source/blender/modifiers/intern/MOD_nodes_evaluator.cc @@ -723,7 +723,7 @@ class GeometryNodesEvaluator { this->execute_node(node, node_state); } - this->node_task_postprocessing(node, node_state); + this->node_task_postprocessing(node, node_state, do_execute_node); } bool node_task_preprocessing(const DNode node, NodeState &node_state) @@ -1006,7 +1006,7 @@ class GeometryNodesEvaluator { } } - void node_task_postprocessing(const DNode node, NodeState &node_state) + void node_task_postprocessing(const DNode node, NodeState &node_state, bool was_executed) { this->with_locked_node(node, node_state, [&](LockedNode &locked_node) { const bool node_has_finished = this->finish_node_if_possible(locked_node); @@ -1017,8 +1017,9 @@ class GeometryNodesEvaluator { /* Either the node rescheduled itself or another node tried to schedule it while it ran. */ this->schedule_node(locked_node); } - - this->assert_expected_outputs_have_been_computed(locked_node); + if (was_executed) { + this->assert_expected_outputs_have_been_computed(locked_node); + } }); } |