Difference between revisions of "For (LogiX node)"
Jump to navigation
Jump to search
(Created page with "For will fire x times on impulse. X is defined by a given Integer. Impulse outputs are On Start, Iteration, On End, and an integer output of the current iteration.") |
|||
(26 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
− | For | + | <languages></languages> |
− | + | <translate> | |
− | Impulse | + | <!--T:1--> |
+ | {{Infobox Logix Node | ||
+ | | Name = For | ||
+ | | Image =[[File: ForNodeNode.png | noframe | 128px | 'For' LogiX node ]] | ||
+ | | Input0Type = Impulse | Input0Name = Run | ||
+ | | Input1Type = Int | Input1Name = Count | ||
+ | | Input2Type = Bool | Input2Name = Reverse | ||
+ | | Output0Type = Impulse | Output0Name = LoopStart | ||
+ | | Output1Type = Impulse | Output1Name = LoopIteration | ||
+ | | Output2Type = Impulse | Output2Name = LoopEnd | ||
+ | | Output3Type = Int | Output3Name = Iteration | ||
+ | }} | ||
+ | |||
+ | <!--T:2--> | ||
+ | The '''For''' node is used to fire impulses from the <code>LoopIteration</code> output a specific number of times when an impulse is received at <code>Run</code>. | ||
+ | |||
+ | == Usage == <!--T:3--> | ||
+ | * The <code>Count</code> input determines how many times impulses will be fired from the <code>LoopIteration</code> output. The default is 0. This count, is evaluated immediately after the <code>LoopStart</code> impulse chain has completed, just before any impulses are fired from <code>LoopIteration</code>. | ||
+ | |||
+ | <!--T:6--> | ||
+ | * The <code>Reverse</code> input controls if the <code>Iteration</code> output value is incremented or decremented each <code>LoopIteration</code>. The default is False, meaning <code>Iteration</code> is incremented each iteration. | ||
+ | |||
+ | <!--T:7--> | ||
+ | * The <code>LoopStart</code> output fires an impulse once after an impulse is received at <code>Run</code>. This impulse chain will complete before any impulses are fired from <code>LoopIteration</code>. | ||
+ | |||
+ | <!--T:8--> | ||
+ | * The <code>LoopIteration</code> output fires impulses sequentially until the total number which have been fired is equal to the <code>Count</code> input. Each impulse chain started from <code>LoopIteration</code> completes before the following one is fired. Nodes which [[Logix:Impulse Splitting|split the chain]] will cause the For node to continue with subsequent iterations without waiting for the split chain's completion. | ||
+ | |||
+ | <!--T:9--> | ||
+ | * The <code>LoopEnd</code> output fires an impulse once the final impulse chain started from <code>LoopIteration</code> has ended. | ||
+ | |||
+ | <!--T:10--> | ||
+ | * The <code>Iteration</code> output value is either incremented or decremented each time a new impulse is fired from <code>LoopIteration</code>, depending on the value of <code>Reverse</code>. If <code>Reverse</code> is False, <code>Iteration</code> is incremented each time an impulse is fired from <code>LoopIteration</code> starting with the value 0, during the first iteration, and ending with <code>Count</code> - 1 on the final iteration. If <code>Reverse</code> is True, the <code>Iteration</code> value is <code>Count</code> - 1 on the first iteration and decremented each time down to 0 on the final iteration. | ||
+ | |||
+ | <!--T:11--> | ||
+ | Impulse chains started from this node effectively continue the one which arrived at <code>Run</code>, meaning that any temporary values from previous nodes are still available. All iterations from <code>LoopIteration</code> complete within a single frame update and therefore this can produce framerate hitches if an excessively demanding computation is performed. There is a failsafe which will put this node into an error state (node visual turns red) if a frame is delayed excessively - this helps prevent complete freezes. | ||
+ | |||
+ | == Examples == <!--T:4--> | ||
+ | |||
+ | == Node Menu == <!--T:5--> | ||
+ | </translate> | ||
+ | |||
+ | [[Category:LogiX{{#translation:}}|For]] | ||
+ | [[Category:LogiX:Flow{{#translation:}}|For]] | ||
+ | {{:NodeMenu-Flow}} |
Latest revision as of 01:31, 7 November 2022
For | ||
---|---|---|
Inputs | ||
Impulse | Run | |
Int | Count | |
Bool | Reverse | |
Outputs | ||
Impulse | LoopStart | |
Impulse | LoopIteration | |
Impulse | LoopEnd | |
Int | Iteration |
The For node is used to fire impulses from the LoopIteration
output a specific number of times when an impulse is received at Run
.
Usage
- The
Count
input determines how many times impulses will be fired from theLoopIteration
output. The default is 0. This count, is evaluated immediately after theLoopStart
impulse chain has completed, just before any impulses are fired fromLoopIteration
.
- The
Reverse
input controls if theIteration
output value is incremented or decremented eachLoopIteration
. The default is False, meaningIteration
is incremented each iteration.
- The
LoopStart
output fires an impulse once after an impulse is received atRun
. This impulse chain will complete before any impulses are fired fromLoopIteration
.
- The
LoopIteration
output fires impulses sequentially until the total number which have been fired is equal to theCount
input. Each impulse chain started fromLoopIteration
completes before the following one is fired. Nodes which split the chain will cause the For node to continue with subsequent iterations without waiting for the split chain's completion.
- The
LoopEnd
output fires an impulse once the final impulse chain started fromLoopIteration
has ended.
- The
Iteration
output value is either incremented or decremented each time a new impulse is fired fromLoopIteration
, depending on the value ofReverse
. IfReverse
is False,Iteration
is incremented each time an impulse is fired fromLoopIteration
starting with the value 0, during the first iteration, and ending withCount
- 1 on the final iteration. IfReverse
is True, theIteration
value isCount
- 1 on the first iteration and decremented each time down to 0 on the final iteration.
Impulse chains started from this node effectively continue the one which arrived at Run
, meaning that any temporary values from previous nodes are still available. All iterations from LoopIteration
complete within a single frame update and therefore this can produce framerate hitches if an excessively demanding computation is performed. There is a failsafe which will put this node into an error state (node visual turns red) if a frame is delayed excessively - this helps prevent complete freezes.