API reference
Every public class, method, and event in @codexo/exojs. Generated from source.
classTileLayerNode
A scene node that renders one generic TileLayer as a Container of per-chunk TileChunkNode drawables. Each non-empty loaded chunk becomes one child positioned at its pixel origin, so the engine's existing per-node culling drops individual chunks and the render-plan optimiser batches them by tileset texture. The layer's pixel `offset` is applied to this node's transform; `visible` and `opacity` are read live from the runtime layer on every frame (no rebuild required). The node references — but never owns — the TileLayer: destroying it frees its chunk nodes and their cached geometry but leaves the layer, map, and Loader-owned textures intact. Structural changes to the layer (tiles written into previously-empty chunks) are reflected only after TileLayerNode.refresh; in-place edits to existing chunks are picked up automatically via chunk revisions.
import { TileLayerNode } from '@codexo/exojs-tilemap' A scene node that renders one generic TileLayer as a Container of per-chunk TileChunkNode drawables.
Each non-empty loaded chunk becomes one child positioned at its pixel origin, so the engine's existing per-node culling drops individual chunks and the render-plan optimiser batches them by tileset texture. The layer's pixel `offset` is applied to this node's transform; `visible` and `opacity` are read live from the runtime layer on every frame (no rebuild required).
The node references — but never owns — the TileLayer: destroying it frees its chunk nodes and their cached geometry but leaves the layer, map, and Loader-owned textures intact.
Structural changes to the layer (tiles written into previously-empty chunks) are reflected only after TileLayerNode.refresh; in-place edits to existing chunks are picked up automatically via chunk revisions.
new(layer: TileLayer, options?: TileLayerNodeOptions): TileLayerNode _invalidateBoundsCascade(): void _invalidateChildrenTransform(): void _invalidateSubtreeTransform(): void addChild(children: RenderNode[]): this addChildAt(child: RenderNode, index: number): this addFilter(filter: Filter): this clearFilters(): this collidesWith(target: Collidable): CollisionResponse | null contains(x: number, y: number): boolean destroy(): void getBounds(): Rectangle getChildAt(index: number): RenderNode getChildIndex(child: RenderNode): number getGlobalTransform(): Matrix getLocalBounds(): Rectangle getNormals(): Vector[] getTransform(): Matrix intersectsWith(target: Collidable): boolean invalidateCache(): this inView(view: View): boolean move(x: number, y: number): this project(axis: Vector, result: Interval): Interval refresh(): this removeChild(child: RenderNode): this removeChildAt(index: number): this removeChildren(begin: number, end: number): this removeFilter(filter: Filter): this render(backend: RenderBackend): this rotate(degrees: number): this setAnchor(x: number, y: number): this setChildIndex(child: RenderNode, index: number): this setOrigin(x: number, y: number): this setPosition(x: number, y: number): this setRotation(degrees: number): this setScale(x: number, y: number): this setSkew(x: number, y: number): this swapChildren(firstChild: RenderNode, secondChild: RenderNode): this updateBounds(): this updateParentTransform(): this updateTransform(): this setInternalSpriteFactory(factory: object | null): void clip: boolean clipShape: Rectangle | Geometry | null collisionType: CollisionType cursor: string | null draggable: boolean flags: Flags<SceneNodeTransformFlags> preserveDrawOrder: boolean anchor: ObservableVector bottom: number cacheAsBitmap: boolean children: RenderNode[] cullable: boolean filters: readonly Filter[] height: number interactive: boolean isAlignedBox: boolean layer: TileLayer left: number mask: MaskSource origin: ObservableVector parent: Container | null pixelSnapMode: PixelSnapMode position: ObservableVector right: number rotation: number scale: ObservableVector skewX: number skewY: number top: number visible: boolean width: number x: number y: number zIndex: number onDrag: Signal<[InteractionEvent]> onDragEnd: Signal<[InteractionEvent]> onDragStart: Signal<[InteractionEvent]> onPointerDown: Signal<[InteractionEvent]> onPointerMove: Signal<[InteractionEvent]> onPointerOut: Signal<[InteractionEvent]> onPointerOver: Signal<[InteractionEvent]> onPointerTap: Signal<[InteractionEvent]> onPointerUp: Signal<[InteractionEvent]>