Reference
Built-in Nodes
Every built-in node, grouped the way the searchable add-menu groups
them. On top of these, the single generic Engine Call node
reaches every engine subsystem — its own reference table follows below.
| Node | Category | Purpose |
|---|---|---|
Event | Events | Host-fired entry point — OnInit, Construct, OnLevelLoaded, a UI element event, or a custom event you declare. Optional argument data-out. |
Function | Events | Declares a function: typed input parameters (as data-outs), an access modifier (public/private), and a subgraph body. |
Return | Events | Writes the owning function's return values. Terminal — no exec-out. |
Get Self | Events | A Ref to this running instance. |
Get Game Instance | Events | A Ref to the app-wide GameInstance, reachable from any graph. |
Branch | Flow | An if — steers True/False exec-outs from a Bool. |
Sequence | Flow | Runs two exec-outs in order, one fully before the next. |
For Each | Flow | Loops an array: Body once per element (with Element + Index), then Done. The sanctioned way to reach elements of an object array. |
Delay | Flow | Latent — pauses the chain and resumes from Completed after Duration seconds. Retriggering while pending is ignored; the resumed chain is a fresh run, so wire state through variables, not exec outputs. |
Do Once | Flow | Lets the chain through only the first time per instance. |
Flip Flop | Flow | Alternates its A/B exec-outs (A first); Is A reports which side just ran. |
Get Variable | Variables | Reads a graph variable — single value or array, any type. |
Set Variable | Variables | Writes a graph variable; passes the value through as a data-out. |
| Float, Bool, Int, String, Vec2, Color, Transform | Literals | Constant values edited inline on the node body. Bool/Int/Float/String also accept an inline value directly on an unwired input pin — no literal node needed. |
Add, Subtract, Multiply, Divide | Math | Arithmetic on floats; dividing by zero returns 0 rather than faulting. |
Greater, Less, Equals | Math | Comparisons; Equals compares floats within a small epsilon. |
And, Or, Not | Logic | Boolean operators. |
Concat | Strings | Joins two strings. |
To String | Strings | Converts a value to its string form. |
| Make Array, Array Length, Array Get, Array Append, Array Set, Array Insert, Array Remove, Array Contains, Array Index Of | Arrays | Pure, copy-semantics array operations — each returns a new array rather than mutating in place. Array pins draw as a 2×2 grid to distinguish a list-of-T from a scalar T. |
Create Widget | Widgets | Instantiates a UI Widget asset by path, returns a Widget id. |
| Show Widget, Hide Widget, Destroy Widget | Widgets | Acts on a widget by id. |
| Show Self, Hide Self | Widgets | A widget graph shows or hides its own widget. |
Create Object | Objects & References | Instantiates a HorizonCode Class asset, fires its Construct, returns a Ref. |
Destroy Object | Objects & References | Destroys a referenced object (fires Destruct). |
Call Function | Objects & References | Calls a function defined in this same graph. |
| Call Function (Ref) | Objects & References | Calls a public function on another running instance through a Ref. |
| Get (Ref) / Set (Ref) | Objects & References | Reads or writes a public variable on a referenced instance. |
| Get Property / Set Property | Objects & References | Reads or writes a property on the graph's target element — a widget element, for example. |
Bind Event | Objects & References | Subscribes to another instance's event through a reference; when it fires, this instance's matching event runs. |
Emit Event | Objects & References | Broadcasts an event to everyone bound to this instance. |
Is Valid | Objects & References | Bool: is a Ref a live instance? The guard to run before touching an object that may have been destroyed. |
Print | Debug | Logs a value to the engine log. |
Engine Call | Engine | The universal node — pick any function from the HE::api registry and its pins mirror that function's parameters and results. One node type exposes every engine subsystem below. |
Engine surface
Engine Call Subsystems
One descriptor registry lights up Engine Call nodes and the
horizon.<group>.<fn> Lua/Python APIs at the same
time, so a HorizonCode graph and a script reach exactly the same engine
surface. 19 groups, ~220 functions today:
| Group | # | Functions |
|---|---|---|
| Debug | 5 | log, debug.line, debug.sphere, debug.box, debug.clear |
| Entity | 8 | getName, spawn, destroy, distance, findByName, exists, setVisible, getVisible |
| Transform | 6 | get/set Position, Rotation, Scale |
| Physics | 3 | raycast, setVelocity, isGrounded |
| Material | 2 | getParam, setParam |
| UI | 11 | element access — get/set Text, Color, Visible, Position, Size, setMaterialParam |
| Widget | 7 | create, destroy, show, hide, setZOrder, isVisible, callFunction |
| Cursor | 1 | setVisible |
| Math | 4 | clamp, lerp, length, distance |
| Random | 5 | seed, value, range, rangeInt, chance |
| Time | 3 | deltaTime, elapsed, frameCount |
| Input | 5 | keyDown, mouseButton, mousePosition, mouseDelta, scrollDelta |
| Camera | 6 | get/set Position, Rotation, Fov |
| Environment | 106 | get/set for every sky & weather field — TimeOfDay, CloudCoverage, FogDensity, WindDirection, WindSpeed, sun/moon, stars, nebula, aurora, precipitation & more (53 fields × get+set) |
| Audio | 7 | play, playAt, stop, stopAll, isPlaying, setBusVolume, setSoundPosition |
| String | 11 | length, substring, contains, find, replace, toUpper, toLower, trim, startsWith, endsWith, toNumber |
| File | 5 | writeText, readText, exists, remove, makeDir — sandboxed to a per-user save folder |
| Save | 11 | set/get Number/String/Bool, hasKey, deleteKey, saveToSlot, loadFromSlot, slotExists |
| Scene | 12 | load, loadAdditive, unloadZone, activate, hasPendingLevel, showZone, hideZone, zonePosition, setZonePosition, zoneScene, loadedZones, available |
Scene streaming: Scene enables seamless
transitions — load swaps the world only after the new one
finishes building, while loadAdditive streams a zone in at
a position (hidden or visible) for later toggling. The scene input on
these calls is picked from a dropdown of your project's scenes, so a
hand-typed path can never silently miss what the exporter packed.