Skip to main content

Patch node reference

203 nodes across 24 categories. Nodes marked * still work in existing graphs but are no longer offered in the palette.

A node is one of four kinds: an event node starts the graph, a control node shapes the flow (branch, loop, gate), an effect node does something and passes the pulse on, and a data node is just a value. See Patches.

animation

NodeWhat it doesKindInputsOutputs
animateRuns a built-in animation step.effecttarget:object, params:any, exec:pulsethen:pulse

appearance

NodeWhat it doesKindInputsOutputs
set_colorSets the colour on every material slot at once.effectobject:object, color:color, exec:pulsethen:pulse

audio

NodeWhat it doesKindInputsOutputs
play_soundPlays a one-shot sound. Each call is independent, so effects never cut each other off.effectobject:object, volume:number, exec:pulsethen:pulse

code

NodeWhat it doesKindInputsOutputs
actionJavaScript statements, run in the flow.effecta:any, b:any, c:any, d:any, exec:pulsethen:pulse
expressionA JavaScript expression, for the one thing no node covers.dataa:any, b:any, c:any, d:anyresult:any

components

NodeWhat it doesKindInputsOutputs
get_anchorReads a scene’s trigger settings.dataobject:objectisMain:boolean, imageId:string, physicalWidth:number, physicalHeight:number, showHints:boolean, text:string, physicalSize:number, latitude:number, longitude:number, anchorPoint:string, faceGrid:boolean, faceTextureId:string, fillEyes:boolean, fillMouth:boolean, flipTexture:boolean, bindingType:string, recognitionAlgorithm:string, providerIos:string, providerAndroid:string, vps:boolean, locationIds:any, cameraId:string
get_audioReads a sound’s settings.dataobject:objectaudio:string, volume:number, play:boolean, loop:boolean, muted:boolean, positional:boolean, position:number
get_colliderReads the collision shape.dataobject:objecthalfExtents:vector, radius:number, radiusTop:number, radiusBottom:number, height:number, segments:number
get_geometryReads the shape and its dimensions.dataobject:objectwidth:number, height:number, depth:number, widthSegments:number, heightSegments:number, depthSegments:number, cornerRadius:number, cornerSegments:number, radius:number, phiStart:number, phiLength:number, thetaStart:number, thetaLength:number, radiusTop:number, radiusBottom:number, radialSegments:number, openEnded:boolean, capSegments:number, segments:number, detail:number, innerRadius:number, outerRadius:number, thetaSegments:number, phiSegments:number, tube:number, tubularSegments:number, arc:number, points:any, bevelEnabled:boolean, bevelThickness:number, bevelSize:number, bevelSegments:number, referal:string
get_initial_velocityReads the starting push.dataobject:objectvelocity:vector, angularVelocity:vector
get_instancerReads how copies are arranged.dataobject:objectmaxCount:number, seed:number, scaleMin:number, scaleMax:number, rotationJitter:vector, colorA:color, colorB:color, countX:number, countY:number, countZ:number, spacing:vector, jitter:number, count:number, shape:string, extents:vector
get_lightReads a light’s colour and intensity.dataobject:objectcolor:color, intensity:number, castShadow:boolean, visible:boolean, distance:number, decay:number, angle:number, penumbra:number, groundColor:color
get_look_atReads the look-at target.dataobject:objecttarget:vector, offset:vector
get_materialReads the first material slot.dataobject:objectmaterials:any
get_metaReads the name, and whether the object is enabled and visible.dataobject:objectname:string, type:string, sort:number, enabled:boolean, visible:boolean, isMain:boolean
get_model_refReads which model and clip are playing.dataobject:objectreferal:string, clip:string, speed:number, repeatMode:string, repeatCount:number, startFrame:number, stopWhenPressed:boolean, playing:boolean
get_parentReads which object this one is inside.dataobject:objectparent:string, order:number, lock:boolean
get_particle_emitterReads emitter settings.dataobject:objectemitting:boolean, count:number, lifetime:number, shape:string, radius:number, extents:vector, angle:number, speedMin:number, speedMax:number, gravity:vector, drag:number, turbulence:number, sizeStart:number, sizeEnd:number, sizeJitter:number, spin:number, colorStart:color, colorEnd:color, opacityStart:number, opacityEnd:number, sprite:string, blending:string, seed:number
get_physics_stateReads live speed and whether the body is asleep. Read-only.dataobject:objectvelocity:vector, angularVelocity:vector, speed:number, sleeping:boolean
get_rigid_bodyReads the physics body settings.dataobject:objecttype:string, mass:number, linearDamping:number, angularDamping:number, fixedRotation:boolean, friction:number, restitution:number, network:string
get_scriptReads a script component’s settings.dataobject:objectreferal:string, enabled:boolean, props:any
get_shadowReads the shadow flags.dataobject:objectcastShadow:boolean, receiveShadow:boolean
get_statesReads which state is active.dataobject:objectstates:any, activeStateId:string
get_temporal_stateReads the animation preset.dataobject:objectpresets:any, activePresetId:string
get_textReads the text and its look.dataobject:objectfont:string, fontStyle:string, text:string, fontWeight:string, fontSize:number, width:number, height:number, textAlign:string, verticalAlign:string, color:any
get_transformReads position, rotation and scale. Rotation is in degrees.dataobject:objectposition:vector, rotation:vector, scale:vector, lock:boolean
get_videoReads a video’s settings.dataobject:objectvideo:string, volume:number, play:boolean, loop:boolean, muted:boolean, positional:boolean, position:number
set_anchorChanges them.effectobject:object, isMain:boolean, imageId:string, physicalWidth:number, physicalHeight:number, showHints:boolean, text:string, physicalSize:number, latitude:number, longitude:number, anchorPoint:string, faceGrid:boolean, faceTextureId:string, fillEyes:boolean, fillMouth:boolean, flipTexture:boolean, bindingType:string, recognitionAlgorithm:string, providerIos:string, providerAndroid:string, vps:boolean, locationIds:any, cameraId:string, exec:pulsethen:pulse
set_audioPlays, pauses, or changes volume.effectobject:object, audio:string, volume:number, play:boolean, loop:boolean, muted:boolean, positional:boolean, position:number, exec:pulsethen:pulse
set_colliderChanges it.effectobject:object, halfExtents:vector, radius:number, radiusTop:number, radiusBottom:number, height:number, segments:number, exec:pulsethen:pulse
set_geometryChanges them.effectobject:object, width:number, height:number, depth:number, widthSegments:number, heightSegments:number, depthSegments:number, cornerRadius:number, cornerSegments:number, radius:number, phiStart:number, phiLength:number, thetaStart:number, thetaLength:number, radiusTop:number, radiusBottom:number, radialSegments:number, openEnded:boolean, capSegments:number, segments:number, detail:number, innerRadius:number, outerRadius:number, thetaSegments:number, phiSegments:number, tube:number, tubularSegments:number, arc:number, points:any, bevelEnabled:boolean, bevelThickness:number, bevelSize:number, bevelSegments:number, referal:string, exec:pulsethen:pulse
set_initial_velocityChanges it.effectobject:object, velocity:vector, angularVelocity:vector, exec:pulsethen:pulse
set_instancerChanges the count, spacing or spread.effectobject:object, maxCount:number, seed:number, scaleMin:number, scaleMax:number, rotationJitter:vector, colorA:color, colorB:color, countX:number, countY:number, countZ:number, spacing:vector, jitter:number, count:number, shape:string, extents:vector, exec:pulsethen:pulse
set_lightChanges them — dimming and colour shifts.effectobject:object, color:color, intensity:number, castShadow:boolean, visible:boolean, distance:number, decay:number, angle:number, penumbra:number, groundColor:color, exec:pulsethen:pulse
set_look_atPoints an object at something.effectobject:object, target:vector, offset:vector, exec:pulsethen:pulse
set_materialWrites to it — colour, opacity, roughness and the rest.effectobject:object, materials:any, exec:pulsethen:pulse
set_metaShows, hides, enables or disables an object.effectobject:object, name:string, type:string, sort:number, enabled:boolean, visible:boolean, isMain:boolean, exec:pulsethen:pulse
set_model_refSwitches model, clip, speed or looping.effectobject:object, referal:string, clip:string, speed:number, repeatMode:string, repeatCount:number, startFrame:number, stopWhenPressed:boolean, playing:boolean, exec:pulsethen:pulse
set_parentMoves it into another object.effectobject:object, parent:string, order:number, lock:boolean, exec:pulsethen:pulse
set_particle_emitterChanges them — start and stop an effect, or retune it live.effectobject:object, emitting:boolean, count:number, lifetime:number, shape:string, radius:number, extents:vector, angle:number, speedMin:number, speedMax:number, gravity:vector, drag:number, turbulence:number, sizeStart:number, sizeEnd:number, sizeJitter:number, spin:number, colorStart:color, colorEnd:color, opacityStart:number, opacityEnd:number, sprite:string, blending:string, seed:number, exec:pulsethen:pulse
set_rigid_bodyChanges mass, damping or body type.effectobject:object, type:string, mass:number, linearDamping:number, angularDamping:number, fixedRotation:boolean, friction:number, restitution:number, network:string, exec:pulsethen:pulse
set_scriptEnables, disables or reconfigures it.effectobject:object, referal:string, enabled:boolean, props:any, exec:pulsethen:pulse
set_shadowTurns casting and receiving on or off.effectobject:object, castShadow:boolean, receiveShadow:boolean, exec:pulsethen:pulse
set_statesSwitches state.effectobject:object, states:any, activeStateId:string, exec:pulsethen:pulse
set_temporal_stateSwitches preset.effectobject:object, presets:any, activePresetId:string, exec:pulsethen:pulse
set_textChanges what a text object says.effectobject:object, font:string, fontStyle:string, text:string, fontWeight:string, fontSize:number, width:number, height:number, textAlign:string, verticalAlign:string, color:any, exec:pulsethen:pulse
set_transformWrites them — only the ones you wire up.effectobject:object, position:vector, rotation:vector, scale:vector, lock:boolean, exec:pulsethen:pulse
set_videoPlays, pauses, or seeks.effectobject:object, video:string, volume:number, play:boolean, loop:boolean, muted:boolean, positional:boolean, position:number, exec:pulsethen:pulse

data

NodeWhat it doesKindInputsOutputs
booleanTrue or false.datavalue:boolean
colorA colour.datavalue:color
numberA number you type in.datavalue:number
piπ, for angle maths.datavalue:number
textA piece of text.datavalue:string
vectorAn x, y, z triple.datax:number, y:number, z:numbervalue:vector

entities

NodeWhat it doesKindInputsOutputs
find_by_name *Finds an object by name.dataname:stringobject:object
get_by_id *Finds an object by id.dataid:stringobject:object
get_entityRefers to an object: this one, the scene, or one found by name or id.dataquery:stringobject:object
scene *The scene this graph belongs to.dataobject:object
self *This object.dataobject:object

events

NodeWhat it doesKindInputsOutputs
on_blurThe cursor left it.event (on-blur)pulse:pulse
on_clickThis object was tapped or clicked.event (on-click)pulse:pulse
on_collideSomething touched this object; other is what hit it.event (on-collide)pulse:pulse, other:object
on_detectThe marker or surface was found.event (on-detect)pulse:pulse
on_divkit_actionA button on an interface card was pressed.event (on-divkit-action)pulse:pulse, id:string
on_dragPlaced AR content is being dragged.event (on-drag)pulse:pulse, dx:number, dy:number
on_frameEvery frame, with the time since the last one — for anything continuous.event (frame)pulse:pulse, dt:number, time:number
on_game_controlThe character controller changed state — idle, moving, running, jumping.event (on-game-control)pulse:pulse, state:string
on_hoverThe cursor moved onto this object.event (on-hover)pulse:pulse
on_key_downA key went down; key tells you which, so you can filter.event (on-keydown)pulse:pulse, key:string
on_key_upA key was released.event (on-keyup)pulse:pulse, key:string
on_launchThe scene started. Your usual entry point.event (launch)pulse:pulse
on_lostTracking was lost.event (on-lost)pulse:pulse
on_mouse_downA pointer button went down on this object.event (on-mousedown)pulse:pulse
on_mouse_upIt was released.event (on-mouseup)pulse:pulse
on_pauseThe app or tab went to the background.event (on-pause)pulse:pulse
on_pinchPlaced AR content is being pinched.event (on-pinch)pulse:pulse, scale:number
on_placedThe visitor placed the content on a surface.event (on-placed)pulse:pulse
on_pointer_lockThe pointer was captured or released.event (on-pointer-lock)pulse:pulse, locked:boolean
on_pointer_moveThe pointer moved, with how far — for look controls.event (on-pointer-move)pulse:pulse, dx:number, dy:number, deltaYaw:number, deltaPitch:number
on_resizeThe viewport changed size.event (on-resize)pulse:pulse
on_resumeIt came back.event (on-resume)pulse:pulse
on_rotatePlaced AR content is being twisted.event (on-rotate)pulse:pulse, angle:number
on_scrollThe wheel turned.event (on-scroll)pulse:pulse
on_state_activeThis object entered a state.event (on-state-active)pulse:pulse
on_state_inactiveIt left one.event (on-state-inactive)pulse:pulse
on_vps_errorPositioning could not run at all.event (on-vps-error)pulse:pulse
on_vps_localizedThe visitor’s real position was found.event (on-vps-localized)pulse:pulse
on_vps_not_localizedIt was not — this is routine while they look around, not an error.event (on-vps-not-localized)pulse:pulse
on_vps_readyPositioning against a real-world map started up.event (on-vps-ready)pulse:pulse

flow

NodeWhat it doesKindInputsOutputs
branchTake one path or the other depending on a condition.control (branch)exec:pulse, condition:booleantrue:pulse, false:pulse
delayWait, then continue.control (delay)exec:pulse, dt:number, seconds:numberthen:pulse
emit_eventRaise a trigger from this object, which events and scripts can hear.effectevent:string, exec:pulsethen:pulse
for_eachRun the body once per item in a list.control (for_each)exec:pulse, list:anyloop:pulse, item:any, index:number, then:pulse
gateLet the pulse through only while a condition holds.control (gate)exec:pulse, open:booleanthen:pulse
onceLet the pulse through the first time only.control (once)exec:pulsethen:pulse
open_sceneSwitch to another scene.effectscene:string, exec:pulsethen:pulse
open_spaceSwitch to another space.effectspace:string, exec:pulsethen:pulse
repeatRun the body a fixed number of times.control (repeat)exec:pulse, count:numberloop:pulse, index:number, then:pulse
sequenceRun several chains in a defined order.effectexec:pulsefirst:pulse, second:pulse, third:pulse

functions

NodeWhat it doesKindInputsOutputs
call_patchRuns another patch — how you reuse a graph.data
call_scriptCalls a function exported by a script.datavalue:numberresult:number

globals

NodeWhat it doesKindInputsOutputs
get_globalReads one.datavalue:number
on_global_changeFires when a shared value changes.event (global)pulse:pulse, value:number
set_globalStores a value shared with every graph, script and event.effectvalue:number, exec:pulsethen:pulse

io

NodeWhat it doesKindInputsOutputs
patch_inputAn input socket on this patch when it is used by another.datavalue:number
patch_outputAn output socket.datavalue:number

lifecycle

NodeWhat it doesKindInputsOutputs
create_entityMakes a new, empty object.effectname:string, parent:object, exec:pulsethen:pulse, object:object
destroyRemoves an object.effectobject:object, exec:pulsethen:pulse
spawnMakes an object from a resource — a model, an image, a sound.effectresource:string, parent:object, exec:pulsethen:pulse, object:object

list

NodeWhat it doesKindInputsOutputs
listBuilds a list from its inputs; drag the handle for more slots.dataa:any, b:any, c:any, d:anyvalue:any
list_getThe item at an index.datalist:any, index:numberitem:any
list_lengthHow many items.datalist:anyresult:number
list_pushAdds an item to the end.datalist:any, item:anyresult:any

logic

NodeWhat it doesKindInputsOutputs
andTrue when both inputs are true.dataa:boolean, b:booleanresult:boolean
equalsTrue when the two inputs match.dataa:number, b:numberresult:boolean
greater_or_equalLarger, or the same.dataa:number, b:numberresult:boolean
greater_thanTrue when the first is larger.dataa:number, b:numberresult:boolean
if_elsePick one of two values by a condition — the data twin of branch.datacondition:boolean, then:number, else:numberresult:number
less_or_equalSmaller, or the same.dataa:number, b:numberresult:boolean
less_thanTrue when the first is smaller.dataa:number, b:numberresult:boolean
notFlips true and false.datavalue:booleanresult:boolean
not_equalTrue when they differ.dataa:number, b:numberresult:boolean
orTrue when either is.dataa:boolean, b:booleanresult:boolean
sameTrue when two objects are the same object.dataa:any, b:anyresult:boolean
selectPick a value from several by index.datacondition:boolean, then:any, else:anyresult:any

math

NodeWhat it doesKindInputsOutputs
absDrops the sign.datavalue:numberresult:number
acosInverse cosine.datavalue:numberresult:number
addAdds.dataa:number, b:numberresult:number
asinInverse sine.datavalue:numberresult:number
atanInverse tangent.datavalue:numberresult:number
atan2The angle to a point, handling every quadrant — how you aim at something.dataa:number, b:numberresult:number
ceilRounds up.datavalue:numberresult:number
clampKeeps a value inside a range.datavalue:number, min:number, max:numberresult:number
cosCosine.datavalue:numberresult:number
deg_to_radDegrees to radians.datavalue:numberresult:number
divideDivides.dataa:number, b:numberresult:number
expe to the power of the input.datavalue:numberresult:number
floorRounds down.datavalue:numberresult:number
lerpBlends between two values — 0 gives the first, 1 the second.dataa:number, b:number, t:numberresult:number
logNatural logarithm.datavalue:numberresult:number
maxThe larger of two.dataa:number, b:numberresult:number
minThe smaller of two.dataa:number, b:numberresult:number
moduloThe remainder — the usual way to wrap a value round.dataa:number, b:numberresult:number
multiplyMultiplies.dataa:number, b:numberresult:number
powerRaises to a power.dataa:number, b:numberresult:number
rad_to_degRadians to degrees.datavalue:numberresult:number
randomA random number in a range.datamin:number, max:numbervalue:number
remapRescales a value from one range to another. Extremely useful; reach for it often.datavalue:number, inMin:number, inMax:number, outMin:number, outMax:numberresult:number
roundRounds to nearest.datavalue:numberresult:number
signGives −1, 0 or 1.datavalue:numberresult:number
sinSine — the building block of anything that oscillates.datavalue:numberresult:number
sqrtSquare root.datavalue:numberresult:number
subtractSubtracts.dataa:number, b:numberresult:number
tanTangent.datavalue:numberresult:number

messaging

NodeWhat it doesKindInputsOutputs
on_messageReceives one.event (message)pulse:pulse, payload:object
post_messageSends a named message to anything listening.effectpayload:object, exec:pulsethen:pulse

net

NodeWhat it doesKindInputsOutputs
net_connectedTrue when a room is actually open.datavalue:boolean
net_despawnRemoves one everywhere.effectid:string, exec:pulsethen:pulse
net_idThis participant’s id — the usual key for their own state.datavalue:string
net_peer_countHow many.datavalue:number
net_peersEveryone currently in the room.datavalue:any
net_sendSends a message to everyone else in the room.effectdata:any, exec:pulsethen:pulse
net_spawnCreates an object on every participant’s screen.effectresource:string, position:vector, rotation:vector, exec:pulsethen:pulse, id:string
net_state_getReads it.datavalue:any
net_state_setWrites to the shared state everyone can read.effectvalue:any, exec:pulsethen:pulse
on_net_joinSomeone joined.event (net-join)pulse:pulse, peer:string
on_net_leaveSomeone left.event (net-leave)pulse:pulse, peer:string
on_net_messageReceives one.event (net)pulse:pulse, data:any, from:string
on_net_stateFires when a shared value changes.event (net-state)pulse:pulse, value:any

physics

NodeWhat it doesKindInputsOutputs
apply_forceA continuous push while it runs — for thrust and wind.effectobject:object, force:vector, exec:pulsethen:pulse
apply_impulseA single push — for jumps, hits and launches.effectobject:object, force:vector, exec:pulsethen:pulse
apply_torqueA twisting push.effectobject:object, torque:vector, exec:pulsethen:pulse
get_angular_velocityHow fast it is spinning.dataobject:objectvalue:vector
get_speedHow fast, ignoring direction.dataobject:objectvalue:number
get_velocityHow fast and which way something is moving.dataobject:objectvalue:vector
is_sleepingTrue when a body has settled and stopped simulating.dataobject:objectvalue:boolean
raycastFires a ray and reports what it hit.control (await)from:vector, to:vector, ignore:object, exec:pulsethen:pulse, hit:boolean, object:object, point:vector, normal:vector, distance:number
set_angular_velocitySets spin outright.effectobject:object, velocity:vector, exec:pulsethen:pulse
set_gravityChanges gravity for the whole scene.effectgravity:vector, exec:pulsethen:pulse
set_velocitySets speed and direction outright.effectobject:object, velocity:vector, exec:pulsethen:pulse
sleep_bodyPuts one to sleep.effectobject:object, exec:pulsethen:pulse
wake_bodyWakes a settled body.effectobject:object, exec:pulsethen:pulse

state

NodeWhat it doesKindInputsOutputs
counterCounts pulses. Survives between frames.effectinc:pulsethen:pulse, count:number
smoothEases a value toward a target each frame — the cheap way to make anything feel less rigid.effecttick:pulse, target:number, rate:numberthen:pulse, value:number
timerCounts seconds while it runs.effecttick:pulse, add:numberthen:pulse, time:number
toggleFlips between true and false each pulse.effectexec:pulsethen:pulse, value:boolean

string

NodeWhat it doesKindInputsOutputs
concatJoins text together.dataa:string, b:stringresult:string
string_lengthHow many characters.datavalue:stringresult:number
to_numberReads a number out of text.datavalue:stringresult:number
to_stringTurns a value into text — for labels and score displays.datavalue:numberresult:string

ui

NodeWhat it doesKindInputsOutputs
get_divkitReads a variable from an interface card.dataobject:objectvalue:any
set_divkitWrites one — how a graph updates a score or a label.effectobject:object, value:any, exec:pulsethen:pulse

variables

NodeWhat it doesKindInputsOutputs
get_variableReads it back.datavalue:any
set_variableStores a value for this graph.effectvalue:any, exec:pulsethen:pulse

vector

NodeWhat it doesKindInputsOutputs
vector_addAdds two vectors.dataa:vector, b:vectorresult:vector
vector_crossCross product — a direction perpendicular to both.dataa:vector, b:vectorresult:vector
vector_distanceDistance between two points.dataa:vector, b:vectorresult:number
vector_dotDot product — how much two directions agree. Use it to tell "in front" from "behind".dataa:vector, b:vectorresult:number
vector_lengthHow long the vector is.datav:vectorresult:number
vector_lerpBlends between two positions.dataa:vector, b:vector, t:numberresult:vector
vector_normalizeSame direction, length 1.datav:vectorresult:vector
vector_scaleMultiplies a vector by a number.datav:vector, s:numberresult:vector
vector_subtractSubtracts one from the other — the direction from B to A.dataa:vector, b:vectorresult:vector