m Add hint to prefer For-Loops where possible |
added examples, no longer a stub |
||
Line 14: | Line 14: | ||
] | ] | ||
|}} | |}} | ||
A While node will start running when * is [[Impulses|impulsed]]. The code will continue running and hold a [[Impulses#Context|context]] until the provided Condition is false or the max execution iterations is hit. | A While node will start running when * is [[Impulses|impulsed]]. The code will continue running and hold a [[Impulses#Context|context]] until the provided Condition is false or the max execution iterations is hit. | ||
{{Note|If just a [[ProtoFlux:Input|Input]] with the type boolean set to true is provided, the code will not be able to stop and will error the entire Flux chain once max iterations is it, stopping execution.|warning}} | {{Note|If just a [[ProtoFlux:Input|Input]] with the type boolean set to true is provided, the code will not be able to stop and will error the entire Flux chain once max iterations is it, stopping execution.|warning}} | ||
Caution should be exercised when using this node. If it is easy to determine how often the loop is going to execute, a [[ProtoFlux:For|For]]-Loop should be preferred to avoid accidentally crashing the game. | Caution should be exercised when using this node. If it is easy to determine how often the loop is going to execute, a [[ProtoFlux:For|For]]-Loop should be preferred to avoid accidentally crashing the game. | ||
== Inputs == | |||
=== * ([[Impulses|Call]]) === | |||
Impulse to start the loop | |||
=== Condition ([[Type:Bool|Boolean]]) === | |||
The value that the loop will check for if it should continue running or not. | |||
== Outputs == | |||
=== LoopStart ([[Impulses|Impulse]]) === | |||
Fires once at the beginning of the loop, regardless of if Condition ([[Type:Bool|Boolean]]) is true or not. | |||
=== LoopIteration ([[Impulses|Impulse]]) === | |||
Fires infinitely all in one game tick until the game crashes, or Condition ([[Type:Bool|Boolean]]) is false. Will only fire if Condition ([[Type:Bool|Boolean]]) is true. | |||
=== LoopEnd ([[Impulses|Impulse]]) === | |||
Fires once the triggered loop has ended and the node has not hit a critical error. | |||
== Examples == | |||
<gallery widths=480px heights=480px> | |||
File:Protoflux_example_while_loop.webp|Example of how to use a while loop. | |||
File:Protoflux_example_while_loop_failed.webp|Example of how to not use a while loop, which will crash the game if fired. | |||
</gallery> | |||
[[Category:ProtoFlux:Flow]] | [[Category:ProtoFlux:Flow]] |
Revision as of 22:45, 8 February 2024
A While node will start running when * is impulsed. The code will continue running and hold a context until the provided Condition is false or the max execution iterations is hit.
Caution should be exercised when using this node. If it is easy to determine how often the loop is going to execute, a For-Loop should be preferred to avoid accidentally crashing the game.
Inputs
* (Call)
Impulse to start the loop
Condition (Boolean)
The value that the loop will check for if it should continue running or not.
Outputs
LoopStart (Impulse)
Fires once at the beginning of the loop, regardless of if Condition (Boolean) is true or not.
LoopIteration (Impulse)
Fires infinitely all in one game tick until the game crashes, or Condition (Boolean) is false. Will only fire if Condition (Boolean) is true.
LoopEnd (Impulse)
Fires once the triggered loop has ended and the node has not hit a critical error.
Examples
-
Example of how to use a while loop.
-
Example of how to not use a while loop, which will crash the game if fired.