Difference between revisions of "For (LogiX node)"

From Neos Wiki
Jump to navigation Jump to search
(Update to new node style & update category)
Line 3: Line 3:
 
<!--T:1-->
 
<!--T:1-->
 
{{Infobox Logix Node
 
{{Infobox Logix Node
| Name = For
+
| Name = While
| Image =[[File: ForNodeNode.png | noframe | 128px | 'For' LogiX node ]]
+
| Image =[[File: WhileNodeNode.png | noframe | 128px | 'While' LogiX node ]]
 
| Input0Type = Impulse | Input0Name = Run
 
| Input0Type = Impulse | Input0Name = Run
| Input1Type = Int | Input1Name = Count
+
| Input1Type = Bool | Input1Name = Condition
| Input2Type = Bool | Input2Name = Reverse
 
 
| Output0Type = Impulse | Output0Name = LoopStart
 
| Output0Type = Impulse | Output0Name = LoopStart
 
| Output1Type = Impulse | Output1Name = LoopIteration
 
| Output1Type = Impulse | Output1Name = LoopIteration
 
| Output2Type = Impulse | Output2Name = LoopEnd
 
| Output2Type = Impulse | Output2Name = LoopEnd
| Output3Type = Int | Output3Name = Iteration
 
 
}}
 
}}
  
 
<!--T:2-->
 
<!--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>.
+
The '''While''' node is used to fire impulses from the <code>LoopIteration</code> output until the <code>Condition</code> becomes True after an impulse is received at <code>Run</code>.
  
 
== Usage == <!--T:3-->
 
== Usage == <!--T:3-->
The <code>Count</code> input determines how many times impulses will be fired from the <code>LoopIteration</code> output. Default is 0.
 
 
 
The <code>Reverse</code> input controls whether the <code>Iteration</code> output value is incremented or decremented each <code>LoopIteration</code>. Default is False, meaning <code>Iteration</code> is incremented each iteration.
 
 
 
 
The <code>LoopStart</code> output fires an impulse once after an impulse is received at <code>Run</code>. The impulse chain will complete before any impulses are fired from <code>LoopIteration</code>.
 
The <code>LoopStart</code> output fires an impulse once after an impulse is received at <code>Run</code>. The impulse chain will complete before any impulses are fired from <code>LoopIteration</code>.
  
  
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.
+
The <code>LoopIteration</code> output fires impulses sequentially until the <code>Condition</code> becomes True. Each impulse chain started from <code>LoopIteration</code> completes before the following one is fired.
  
  
 
The <code>LoopEnd</code> output fires an impulse once the final impulse chain started from <code>LoopIteration</code> has ended.
 
The <code>LoopEnd</code> output fires an impulse once the final impulse chain started from <code>LoopIteration</code> has ended.
 
 
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.
 
  
  
Line 39: Line 28:
  
 
== Examples == <!--T:4-->
 
== Examples == <!--T:4-->
 +
The While node is useful when looping and the required number of iterations cannot be determined in advance. If similar looping behavior is required, but the number of required iterations can be fixed, use the [[For (LogiX node)|For]] node instead.
  
 
== Node Menu == <!--T:5-->
 
== Node Menu == <!--T:5-->
 
</translate>
 
</translate>
  
[[Category:LogiX{{#translation:}}|For]]
+
[[Category:LogiX{{#translation:}}|While]]
[[Category:LogiX:Flow{{#translation:}}|For]]
+
[[Category:LogiX:Flow{{#translation:}}|While]]
 
{{:NodeMenu-Flow{{#translation:}}}}
 
{{:NodeMenu-Flow{{#translation:}}}}

Revision as of 14:55, 10 July 2021

Other languages:
English • ‎日本語
While
'While' LogiX node
Inputs
  Impulse Run
  Bool Condition
Outputs
  Impulse LoopStart
  Impulse LoopIteration
  Impulse LoopEnd

The While node is used to fire impulses from the LoopIteration output until the Condition becomes True after an impulse is received at Run.

Usage

The LoopStart output fires an impulse once after an impulse is received at Run. The impulse chain will complete before any impulses are fired from LoopIteration.


The LoopIteration output fires impulses sequentially until the Condition becomes True. Each impulse chain started from LoopIteration completes before the following one is fired.


The LoopEnd output fires an impulse once the final impulse chain started from LoopIteration has ended.


Note that all 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.

Examples

The While node is useful when looping and the required number of iterations cannot be determined in advance. If similar looping behavior is required, but the number of required iterations can be fixed, use the For node instead.

Node Menu

Flow
Back Events Boolean Latch Delay Delay With Value Dynamic Impulse Receiver Dynamic Impulse Receiver With Value`1
Dynamic Impulse Trigger Dynamic Impulse Trigger With Value`1 Fire On Change Fire On False Fire On True Fire While True For
If Impulse Demultiplexer Impulse Multiplexer Local Fire On Change`1 Local Fire On False Local Fire On True Local Impulse Timeout
Local Leaky Impulse Bucket One Per Frame Pulse Random Sequence Timer Update Updates Delay
Updates Delay With Value While