Skip to main content

Connection Types & Ports

Before building flows, you must understand the visual language of the graph. Every color, shape, and line style communicates data flow and execution behavior.

Quick Reference

The legend shown here is also available in the Flow Editor (right-side panel). mouse hover anywhere in the legend to see detailed tooltips.


🧬 Node Types​

A node's header color indicates its execution pattern.

Node Types

Execution Patterns​

ColorTypeBehaviorUse Case
πŸ”΄ RedRoot NodeEntry Point - Fires when event is raised externallyGame start, player input, collision detection
🟠 OrangeTrigger NodeParallel (Fan-Out) - Fires and immediately continues (non-blocking)Sound + VFX + UI updates happening simultaneously
🟒 GreenChain NodeSequential (Blocking) - Fires and waits before continuingCutscenes, delayed actions, async operations

Root Node Rules​

One Per Graph: Each graph has exactly one root node.

Set Root: Right-click any node to Set as Root to change entry point.

Visual: Red header gradient makes it instantly recognizable.


Trigger vs Chain​

Trigger Pattern (Parallel):

Triggers

All executed in parallel together!

Chain Pattern (Sequential):

Chains

Each waits for the previous to finish!


πŸ”Œ Port Types (Data Signatures)​

Port colors indicate the C# event signature and data payload.

Port Colors

Port Color Meanings​

ColorSignatureDescriptionExample Events
πŸ”΅ Cyan()Void - No data passedOnGameStart, OnButtonClick
🌸 Pink<T>Single Argument - One data payloadOnScoreChanged(int), OnDamage(DamageInfo)
πŸ’œ Purple<TSender, TArgs>Dual Arguments - Sender + PayloadOnPlayerDamaged(GameObject, DamageInfo)

Port Anatomy​

  • Left Port (Input): Receives data from previous node.
  • Right Port (Output): Sends data to next node.

πŸ”— Connection Compatibility​

The system provides real-time type safety when creating connections.

Connection Colors

Compatibility Levels​

ColorStatusMeaningImpact
🟒 GreenPerfect MatchTypes match exactlyZero overhead, no conversion
🟑 YellowCompatibleSafe operation with data discardArguments ignored, no errors
🟠 OrangeWarningType conversion requiredAuto-converts (e.g., int β†’ float)
πŸ”΄ RedIncompatibleWill fail at runtimeConnection blocked

Visual Feedback​

While Dragging:

  • Preview line shows compatibility color
  • Invalid targets appear dimmed
  • Valid targets highlight

After Connection:

  • Line color persists
  • Warning icon (⚠️) appears for Orange/Red
  • Hover for detailed tooltip

πŸ“Š Compatibility Matrix​

Connection color is determined by Source Type, Target Type, and Pass Argument setting.

Full Compatibility Table​

Source EventTarget EventPass ArgumentResultExplanation
AnyAnyOFF🟒 GreenOverride: Target ignores all input
Void ()Void ()ON🟒 GreenPerfect match - no data needed
Void ()<T>ONπŸ”΄ RedError: Target needs data, source has none
Void ()<S,T>ONπŸ”΄ RedError: Target needs sender, source has none
<T>Void ()ON🟑 YellowSafe: Argument discarded
<T><T>ON🟒 GreenPerfect match - same type
<T><S,T>ONπŸ”΄ RedError: Target needs sender, source has none
<S,T>Void ()ON🟑 YellowSafe: Both sender & arg discarded
<S,T><T>ON🟑 YellowSafe: Sender discarded, arg passes
<S,T><S,T>ON🟒 GreenPerfect match - sender + arg
<T1><T2>ON🟠 OrangeWarning: Type conversion (int ↔ float)

Special Cases​

Pass Argument = OFF:

Always results in 🟒 Green connection because target ignores all input data.

Use Case: Chain a typed event to a void event without type errors.


Numeric Conversions:

Auto-converts between compatible numeric types (🟠 Orange):

  • int ↔ float
  • float ↔ double
  • int ↔ long

Warning: May lose precision (e.g., float 3.14 β†’ int 3).


Incompatible Types:

Blocked at connection time (πŸ”΄ Red):

  • string β†’ int
  • GameObject β†’ float
  • Custom type mismatches

System prevents creation of these connections.


🏷️ Status Badges​

Badges appear at the bottom of nodes to show active configuration.

Node Badges

Badge Reference​

IconBadgeMeaningApplies To
🧩CondVisual condition tree activeAll nodes
⏱️2.5sStart delay (seconds)All nodes
⏳3.0sBlocking duration (seconds)Chain only
βš“WaitWait for async completionChain only
⬆️+5Execution priorityTrigger only
πŸ”—PassPassing arguments to next nodeAll nodes
πŸ“ŒStaticArguments blocked (static call)All nodes

Badge Examples​

Chain Node with Delay + Duration:

⏱️ 1.0s   ← Wait 1 second before starting
⏳ 3.0s ← Then block for 3 seconds

Trigger Node with Condition + Priority:

🧩 Cond   ← Only fires if condition passes
⬆️ +10 ← Executes before other triggers

Any Node with Argument Passing:

πŸ”— Pass   ← Forwards event data to next node

🎨 Visual Examples​

Example 1: Perfect Match Chain​

Node Perfect Match

Colors:

  • Line 1: 🟒 Green (perfect match)
  • Line 2: 🟑 Yellow (sender discarded safely)

Example 2: Type Conversion Warning​

Node Compatible

Color: 🟠 Orange (int β†’ float conversion)

Risk: Precision change, but works


Example 3: Pass Argument​

Node Compatible

Colors: 🟒 Green (void β†’ int)

No-Blocking: ignore argument to match


Example 4: Parallel Trigger Fan-Out​

Node Compatible

All connections: Green (void β†’ void), executing immediately in parallel


πŸ’‘ Best Practices​

Use Pass Argument Wisely​

When to Pass (ON):

  • Next node needs the event data
  • Building data pipelines
  • Forwarding damage info, scores, etc.

When to Block (OFF):

  • Connecting incompatible types
  • Generic notifications (no data needed)
  • Simplifying complex type chains

Color-Code Your Flows​

Green-Heavy Graphs: Well-typed.

Yellow Connections: Acceptable when intentionally discarding data.

Orange Lines: Review for correctnessβ€”ensure conversions are intentional.

Red Blocks: Fix immediatelyβ€”will fail at runtime.


Organize by Type​

Group similar signature nodes together:

  • Void events in one area
  • Data events in another
  • Async chains separate from triggers

Why: Makes type compatibility easier to visualize.


❓ Common Questions​

Why is my connection red?​

Cause: Type mismatch that cannot be resolved.

Fix:

  1. Check if target needs sender but source doesn't provide it
  2. Disable "Pass Argument" on target node
  3. Insert intermediate conversion node

Can I connect different numeric types?​

Yes: The system auto-converts int, float, double, long.

Result: 🟠 Orange connection with conversion warning.

Caution: Watch for precision loss (float β†’ int).


What does yellow mean?​

Meaning: Safe connection with data discard.

Example: Sending <int> to <void> discards the integer.

Safe?: Yesβ€”no runtime errors, just unused data.

Quick Legend Access

While working in the Flow Graph Editor, the Legend Panel (right side) shows all node types, port colors, and connection meanings. Hover over any legend item for detailed tooltips.

Runtime Errors

πŸ”΄ Red connections are blocked during creation to prevent runtime crashes. If you need to connect incompatible types, disable "Pass Argument" on the target nodeβ€”this forces a 🟒 Green connection by ignoring input data.