Object Flows
Every object can now carry its own node graph, alongside the shared Scene flow. Object flows keep behavior with the thing it belongs to β a door knows how to open, a lamp knows how to flicker β and the Scene flow composes them.
Scene flow vs object flows
- The Scene flow is the shared, world-level graph you have always had.
- An object flow is a private graph document owned by one object. All graphs replicate live to every peer and are saved with sessions, autosave and
.tpsceneexports.
The editor's scope follows your selection: select an object and the Flow editor shows that object's flow (the chip at the top says which); deselect and you are back in the Scene flow. Flow Code shows whichever graph the editor is showing.
Creating and deleting a flow
Select an object that has no flow yet β the editor shows "
No Object Selector needed
Inside an object flow, effect nodes (Spin, Bounce, Script, module nodes, Sound, physics params, On Clickβ¦) target the owner object implicitly β just drop a Spin node in a box's flow and the box spins. Wiring into an Object Selector still works and always wins, so an object's flow may also drive other objects.
Public sockets: Flow Input / Flow Output
An object flow can declare an interface, like a function signature:
- Flow Input β a named, typed value source (number / boolean / vector3 / color). Inside the graph it outputs whatever the Scene feeds it (or its fallback).
- Flow Output β a named sink; whatever you wire into it becomes visible to the Scene. Its gray socket accepts any value type.
Outputs carry values, not effects
Animation/effect nodes (Spin, Pulse, Wobbleβ¦ β the orange sockets) are not values and cannot wire into a Flow Output. Output the driving value instead: the Time, Slider, Math or Loop node that feeds the effect.
Embedding a flow in the Scene graph
Once a flow declares inputs/outputs, embed it in the Scene flow as a single Object Flow node:
- right-click the object in the viewport β Add flow to Scene graph, or
- add an Object Flow node from the palette (Object Flow group) and pick the object β only objects that have flows are listed.
The embedded node shows the declared sockets: Scene values wired into it feed the flow's Flow Inputs; the flow's Flow Output values come out the other side (with one frame of latency). Renaming or deleting an interface node updates the embedded sockets everywhere and cleanly disconnects stale wires; deleting the flow removes its embedded node.
Practical example
A breathing lamp whose intensity the Scene controls:
- Select the lamp object β Create flow.
- Add a Flow Input named
amount(number) and a Pulse node; wireamount β Pulse.amount. The Pulse drives the lamp itself (no Object Selector needed). - Add a Time node (mode
sin) and a Flow Output namedphase; wire Time β phase. (The Time value is what leaves the flow β the Pulse effect itself stays inside.) - Deselect (back in the Scene flow), right-click the lamp β Add flow to Scene graph.
- Wire a Slider into the embedded node's
amountβ the slider now breathes the lamp, andphaseis available to drive anything else in the scene.
Tip
Object flows travel with their object through sessions and undo: deleting an object and undoing brings its flow back intact.