Loop Breaker | Breaks circular binding dependencies. |
During the Validation Phase, Ventuz updates the output properties of a node based on its own input properties and sends them along potential bindings to other nodes. The nodes bound to the outputs of a node are dependent on that node in the sense that they can only produce the correct result for a frame if the providing node has already been validate. If this were not the case, they would operate on old data.
Ventuz therefore constantly maintains a tree (i.e. a direct acyclic graph) of all nodes arranged by their validation dependencies. When a new frame begins, it starts at the root of this tree and follows the bindings until all nodes have been brought up to date. In 99% of all cases, this just works as part of the behind-the-scenes magic of Ventuz and the user does not have to deal with any of it. However, for rare, specialized applications, a circular dependency of property values can be necessary. For those cases, the Loop Breaker node has been introduced.
The Loop Breaker stores the value passed to its Input property and only updates the Output property after all validation is done. This has two effects: For one, it delays the value propagation by one frame, for the other, it decouples its input and output properties, thus breaking the dependency loop.
Chances are that a typical user will never need to employ this node. Either he will never run into this problem in the first place or be able to solve it by a redesign of his binding hierarchy. As long as the following error message does not pop up, simply ignore and avoid this node!