True when globalTransform is a pure translation. Read by child nodes in update() to determine if the translate-only global fast path applies.
True when localTransform is known to be in identity-shape (ta=1, tb=0, tc=0, td=1) so that subsequent updateLocalTransform calls can skip the 4 redundant field writes and use setTranslate() instead.
Autosize properties
Readonlychildrenonly used when rtt = true
OptionalglobalReadonlyisTrue when the node has no rotation, no scale, no mount offset, and no contain-resize. The vast majority of nodes in a typical TV UI are "simple" — their local transform is a pure translation.
OptionallocalOptionalpreloadReadonlypropsOptionalrenderOptionalrenderOptionalsceneOptionalsceneReadonlystageOptionalstrictOptionaltextureAdd a texture to the current RenderOp.
Assigned Texture Index of the texture in the render op
This function calculates the clipping rectangle for a node.
The function then checks if the node is rotated. If the node requires clipping and is not rotated, a new clipping rectangle is created based on the node's global transform and dimensions. If a parent clipping rectangle exists, it is intersected with the node's clipping rectangle (if it exists), or replaces the node's clipping rectangle.
Finally, the node's parentClippingRect and clippingRect properties are updated.
Checks if the node is renderable based on world alpha, dimensions and out of bounds status.
Clear all listeners for the given event names by setting their array length to 0, WITHOUT deleting the keys. This keeps the eventListeners object in V8's fast-properties mode and avoids re-allocating the arrays on the next on() call. Use this for objects with a known fixed set of event names (e.g. CoreAnimation, CoreAnimationController).
Only writes arr.length = 0 when the array is non-empty -- skips the write (and the write barrier on old-gen objects) when already empty, which is the common case after unregisterAnimation() has removed all listeners.
Destroy the node and cleanup all resources
Optionaldata: anyEmit to all listeners, isolating each one from the others.
Optionaldata: anyOptionalonError: LoopErrorHandlerUnlike emit, a throwing listener neither aborts the remaining
listeners nor propagates to the caller (e.g. the rAF loop). Each error is
routed to onError (handleLoopError) or console.error and iteration
continues. Internal renderer code should keep using emit (fail loudly);
app-facing boundaries should use this.
Kept as a separate method so the hot emit path — and more importantly
its callers in the frame loop — stay try-free for older JITs.
Checks if the node has dimensions (width/height)
Check whether this emitter has any listeners registered.
Optionalevent: string
Optional event name. When provided, checks only that event. When omitted, checks all events.
true if at least one listener is registered.
Checks if the node is out of the viewport bounds.
Optionallistener: EventListenerSets the renderable state and triggers changes if necessary.
The new renderable state
@todo: test for correct calculation flag
Updates the isRenderable property based on various conditions.
Changes the renderable state of the node.
A visual Node in the Renderer scene graph.
Remarks
A Node is a basic building block of the Renderer scene graph. It can be a container for other Nodes, or it can be a leaf Node that renders a solid color, gradient, image, or specific texture, using a specific shader.
For text rendering Nodes, see ITextNode.
INode vs CoreNode
CoreNode is the name of the class for a Renderer Node and is only directly used internally by the Renderer. INode describes the public API of a Renderer Node including the ability to be tied to a specific Shader.
Users of the Renderer API, should generally interact with INode objects instead of CoreNode objects.