How nodes work
A flow is a set of nodes joined by wires. Each node does one job, such as waiting, comparing two values, or sending a vibrate command. This page explains how to read a node. The category pages describe every core node:
- Triggers start a flow.
- Logic and Flow control decide what runs next.
- Math, String, and Array work with values.
- Variables store values between runs.
- Device actions control your shockers.
Reading a node
Every node reference shows the node as it appears in the flow editor, with its pins listed beside it.
Inputs
ExecuteFlow
Input pins are on the left.
Value AAny
Value BAny
Outputs
DoneFlow
Output pins are on the right.
ResultBoolean
Properties
- Operator
- Properties are set in the panel that opens when you select the node. They do not appear on the node itself.
- The header shows the node name. Its tint shows the category: green for triggers, yellow for logic, blue for math, purple for string, teal for variables, and red for device actions. Array and flow control nodes have a plain header.
- The pin color shows what kind of value the pin carries. A hollow pin is not connected; it fills in once a wire is attached.
- After a node runs, you can hover it to see how long it took. A red ! badge means its last run failed; hover the badge to read the error.
- Some nodes, such as Display and Counter, show their latest value in a strip under their pins.
Pin types
| Pin | Type | Carries | Connects to |
|---|---|---|---|
| Flow | The signal to run. It carries no value. | Flow pins only | |
| Boolean | true or false | Boolean, Number, String, Any | |
| Number | A number | Boolean, Number, String, Any | |
| String | Text | Boolean, Number, String, Any | |
| Array | A list of values | Array, Any | |
| Any | Whatever is connected to it | Any data pin |
Boolean, Number, and String pins can be wired to each other because MultiShock converts between them when the node runs. Plugins can also add Object, Shocker, and Device pins, which connect only to the same type or to Any. While you drag a wire, pins it cannot connect to are dimmed.
How a flow runs
Green Flow pins decide what runs and in what order. The other pins only carry values.
- A trigger starts the run. The Timer fires its Triggered pin on every interval. Triggers have no inputs.
- A node runs when a wire into its Execute pin fires. Random picks a number, then fires Done.
- When Vibrate runs, it reads the values on its data inputs: the Integer that Random produced moments earlier, and the value from Variable Source.
- Vibrate finishes and fires its own Done pin. Nothing is connected to it, so the run ends.
A few rules follow from this:
- A data input can only read a value from a node that already ran in the same run. If the source node did not run, the input is empty.
- Nodes with no Flow pins at all, such as Variable Source, never need to be triggered. They produce their value whenever another node reads it.
- An unconnected data input falls back to a default. Many nodes have a property with the same name as an input, and use the property when the input is not connected.
- Nodes that branch fire only one of their Flow outputs. If fires True or False, never both.
- When one output is wired to several nodes, those branches run one at a time, and each branch finishes before the next starts. A Delay in the first branch also holds up the second. Use Sequence when the order matters.
- If a node fails, for example Shock when no shockers are loaded, that branch stops and the node shows the red error badge.