@lightningjs/renderer
    Preparing search index...

    Interface INode<ShaderNode>

    A visual Node in the Renderer scene graph.

    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.

    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.

    interface INode<ShaderNode extends CoreShaderNode = CoreShaderNode> {
        absX: number;
        absY: number;
        alpha: number;
        autosize: boolean;
        autosizer: null | Autosizer;
        boundsMargin: null | number | [number, number, number, number];
        calcZIndex: number;
        children: CoreNode[];
        childUpdateType: UpdateType;
        clipping: boolean;
        clippingRect: RectWithValid;
        color: number;
        colorBl: number;
        colorBottom: number;
        colorBr: number;
        colorLeft: number;
        colorRight: number;
        colorTl: number;
        colorTop: number;
        colorTr: number;
        data: undefined | CustomDataMap;
        destroyed: boolean;
        framebufferDimensions: null | Dimensions;
        globalTransform?: Matrix3d;
        h: number;
        hasRTTupdates: boolean;
        hasShaderTimeFn: boolean;
        id: number;
        imageType: null | "svg" | "regular" | "compressed";
        interactive: undefined | boolean;
        isCoreNode: true;
        isRenderable: boolean;
        localTransform?: Matrix3d;
        mount: number;
        mountX: number;
        mountY: number;
        numQuads: number;
        parent: null | INode<CoreShaderNode<Record<string, unknown>>>;
        parentAutosizer: null | Autosizer;
        parentFramebufferDimensions: null | Dimensions;
        parentHasRenderTexture: boolean;
        parentRenderTexture: null | CoreNode;
        pivot: number;
        pivotX: number;
        pivotY: number;
        preloadBound?: Bound;
        premultipliedColorBl: number;
        premultipliedColorBr: number;
        premultipliedColorTl: number;
        premultipliedColorTr: number;
        previousZIndex: number;
        props: CoreNodeProps;
        quadBufferCollection: BufferCollection;
        renderBound?: Bound;
        renderCoords?: RenderCoords;
        renderOpBufferIdx: number;
        renderOpTextures: WebGlCoreCtxTexture[];
        renderState: CoreNodeRenderState;
        rotation: number;
        rtt: boolean;
        rttParent: null | CoreNode;
        scale: number;
        scaleX: number;
        scaleY: number;
        sceneGlobalTransform?: Matrix3d;
        sceneRenderCoords?: RenderCoords;
        shader: ShaderNode;
        src: null | string;
        srcHeight: undefined | number;
        srcWidth: undefined | number;
        srcX: undefined | number;
        srcY: undefined | number;
        stage: Stage;
        strictBound?: Bound;
        texture: null | Texture;
        textureCoords?: Bound;
        textureOptions: TextureOptions;
        time: number;
        updateShaderUniforms: boolean;
        updateType: UpdateType;
        w: number;
        worldAlpha: number;
        x: number;
        y: number;
        zIndex: number;
        addChild(node: CoreNode, previousParent?: null | CoreNode): void;
        addTexture(texture: WebGlCoreCtxTexture): number;
        animate(
            props: Partial<INodeAnimateProps<ShaderNode>>,
            settings: Partial<AnimationSettings>,
        ): IAnimationController;
        calculateClippingRect(parentClippingRect: RectWithValid): void;
        calculateRenderCoords(): void;
        checkBasicRenderability(): boolean;
        checkRenderBounds(): CoreNodeRenderState;
        createRenderBounds(): void;
        destroy(): void;
        draw(renderer: WebGlCoreRenderer): void;
        emit(event: string, data?: any): void;
        flush(): void;
        getTimerValue(): number;
        hasDimensions(): boolean;
        isOutOfBounds(): boolean;
        loadTexture(): void;
        off(event: string, listener?: (target: any, data: any) => void): void;
        on(event: string, listener: (target: any, data: any) => void): void;
        once(event: string, listener: (target: any, data: any) => void): void;
        removeAllListeners(): void;
        removeChild(node: CoreNode, targetParent?: null | CoreNode): void;
        renderQuads(renderer: CoreRenderer): void;
        setRenderable(isRenderable: boolean): void;
        setRTTUpdates(type: number): void;
        setUpdateType(type: UpdateType): void;
        sortChildren(): void;
        unloadTexture(): void;
        update(delta: number, parentClippingRect: RectWithValid): void;
        updateBoundingRect(): void;
        updateIsRenderable(): void;
        updateLocalTransform(): void;
        updateRenderState(renderState: CoreNodeRenderState): void;
        updateTextureOwnership(isRenderable: boolean): void;
    }

    Type Parameters

    Hierarchy

    • Omit<CoreNode, "shader" | "animate" | "parent">
      • INode
    Index

    Properties

    absX: number
    absY: number
    alpha: number
    autosize: boolean
    autosizer: null | Autosizer = null

    Autosize properties

    boundsMargin: null | number | [number, number, number, number]
    calcZIndex: number = 0
    children: CoreNode[] = []
    childUpdateType: UpdateType = UpdateType.None
    clipping: boolean
    clippingRect: RectWithValid = ...
    color: number
    colorBl: number
    colorBottom: number
    colorBr: number
    colorLeft: number
    colorRight: number
    colorTl: number
    colorTop: number
    colorTr: number
    data: undefined | CustomDataMap
    destroyed: boolean = false
    framebufferDimensions: null | Dimensions = null

    only used when rtt = true

    globalTransform?: Matrix3d
    h: number
    hasRTTupdates: boolean = false
    hasShaderTimeFn: boolean = false
    id: number
    imageType: null | "svg" | "regular" | "compressed"
    interactive: undefined | boolean
    isCoreNode: true = ...
    isRenderable: boolean = false
    localTransform?: Matrix3d
    mount: number
    mountX: number
    mountY: number
    numQuads: number = 0
    parent: null | INode<CoreShaderNode<Record<string, unknown>>>
    parentAutosizer: null | Autosizer = null
    parentFramebufferDimensions: null | Dimensions
    parentHasRenderTexture: boolean = false
    parentRenderTexture: null | CoreNode
    pivot: number
    pivotX: number
    pivotY: number
    preloadBound?: Bound
    premultipliedColorBl: number = 0
    premultipliedColorBr: number = 0
    premultipliedColorTl: number = 0
    premultipliedColorTr: number = 0
    previousZIndex: number = -1
    quadBufferCollection: BufferCollection
    renderBound?: Bound
    renderCoords?: RenderCoords
    renderOpBufferIdx: number = 0
    renderOpTextures: WebGlCoreCtxTexture[] = []
    renderState: CoreNodeRenderState = CoreNodeRenderState.Init
    rotation: number
    rtt: boolean
    rttParent: null | CoreNode = null
    scale: number
    scaleX: number
    scaleY: number
    sceneGlobalTransform?: Matrix3d
    sceneRenderCoords?: RenderCoords
    shader: ShaderNode
    src: null | string
    srcHeight: undefined | number
    srcWidth: undefined | number
    srcX: undefined | number
    srcY: undefined | number
    stage: Stage
    strictBound?: Bound
    texture: null | Texture
    textureCoords?: Bound
    textureOptions: TextureOptions
    time: number
    updateShaderUniforms: boolean = false
    updateType: UpdateType = UpdateType.All
    w: number
    worldAlpha: number = 1
    x: number
    y: number
    zIndex: number

    Methods

    • 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.

      Parameters

      • parentClippingRect: RectWithValid

      Returns void

    • Parameters

      • event: string
      • Optionallistener: (target: any, data: any) => void

      Returns void

    • Parameters

      • event: string
      • listener: (target: any, data: any) => void

      Returns void

    • Parameters

      • event: string
      • listener: (target: any, data: any) => void

      Returns void

    • Sets the renderable state and triggers changes if necessary.

      Parameters

      • isRenderable: boolean

        The new renderable state

      Returns void

    • Parameters

      • type: number

      Returns void

    • Change types types is used to determine the scope of the changes being applied

      Parameters

      • type: UpdateType

      Returns void

      See UpdateType for more information on each type

    • @todo: test for correct calculation flag

      Parameters

      • delta: number
      • parentClippingRect: RectWithValid

      Returns void

    • Updates the isRenderable property based on various conditions.

      Returns void

    • Changes the renderable state of the node.

      Parameters

      • isRenderable: boolean

      Returns void