EssentiaNode
EssentiaNode es la clase base de todo nodo visual. Es dueña de sus bounds y de su anclaje, y libera sus recursos de GPU en destroy(). Para crear una primitiva propia, se extiende esta clase.
Uso
setScale(s) es una escala uniforme del nodo: la heredan los hijos de addChild y la sigue el bridge, y no cambia bounds. Un nodo que dibuja un quad unitario guarda su tamaño en un mesh hijo del root, nunca en root.scale.
Referencia
| Miembro | Tipo | Default | Descripción |
|---|---|---|---|
root | Object3D | — | |
bounds | Readonly<Bounds> | — | |
anchor | Readonly<Anchor> | — | |
parent | EssentiaNode | null | — | |
children | readonly EssentiaNode[] | — | |
setSize | (width: number, height: number) => this | — | Define el tamaño del nodo en unidades de mundo. Con cámara ortográfica 1:1, equivale a píxeles. |
addDisposable | (disposable: Disposable) => this | — | Registra un recurso GPU para que sea liberado cuando el nodo se destruye. Geometrías, materiales, texturas y render targets deben registrarse aquí para evitar fugas de memoria GPU. |
setAnchor | (x: number, y: number) => this | — | Define el punto de anclaje normalizado (0–1) dentro del nodo padre. (0.5, 0.5) = centro, (0, 0) = esquina superior izquierda. |
setPosition | (x: number, y: number, z = 0) => this | — | Posiciona el nodo en coordenadas de mundo. |
localRect | (out?: [number, number, number, number]) => LocalRect | — | Rectángulo que ocupa el nodo en el espacio del root, antes de su escala: es lo que proyecta projectNode (p. ej. para el Hybrid Bridge). Por defecto, centrado en el origen con el tamaño de bounds. Una subclase cuyo contenido no está centrado (p. ej. un texto anclado) lo sobrescribe. Si se pasa out, escribe ahí y lo devuelve (sin allocations). |
setScale | (scale: number) => this | — | Escala uniforme del nodo, alrededor de su origen. La heredan los hijos y la sigue projectNode, como un transform: scale() de CSS sobre el contenedor. No cambia bounds: para cambiar el tamaño en reposo, usá setSize(). Un nodo con quad (p. ej. GlassNode) guarda su tamaño en un mesh hijo, nunca en root.scale. |
addChild | (child: EssentiaNode) => this | — | |
removeChild | (child: EssentiaNode) => this | — | |
destroy | () => void | — | Destruye el nodo y todos sus hijos. Se desvincula del padre, libera recursos GPU registrados y libera referencias. Orden: 1. Desvincular del padre (saca este subárbol de la escena) 2. Disponer recursos GPU propios (geometry, material, etc.) 3. Destruir hijos en cascada (cada hijo libera lo suyo) |