Engine
El Engine es el estado central de la escena. Expone el viewport reactivo, la luz global, la calidad por defecto, los vidrios registrados y los niveles de captura. Se accede con useEngine(), dentro de un EssentiaRoot.
Uso
<script>
import { useEngine } from 'essentia-core'
const engine = useEngine()
const width = $derived(engine.viewport.width)
</script> Referencia
| Miembro | Tipo | Default | Descripción |
|---|---|---|---|
viewport | Viewport | — | |
tick | number | — | |
camera | OrthographicCamera | null | — | |
envMap | Texture | null | — | Textura de entorno compartida por toda la escena. Asignada por EssentiaRoot. |
light | Light | — | Luz direccional global, compartida por todas las primitivas que iluminan. Asignada por EssentiaRoot desde su prop light. |
backgroundTarget | WebGLRenderTarget | null | — | Captura de fondo del nivel 0 (el más profundo), la única sin stacking. Asignada por BackgroundCapture. Para muestrear la del nivel que corresponde a un Glass, usá captureFor(z). |
glassMeshes | Set<Mesh> | — | Registro de meshes Glass activos en escena. BackgroundCapture los agrupa por z en niveles de captura y oculta los de cada nivel (y los superiores) durante su captura, para que no aparezcan en su propio fondo. No es $state — no necesita reactividad, es un Set mutable de referencias. |
postCapture | Set<PostCaptureHook> | — | Pasadas que BackgroundCapture ejecuta sobre cada captura de fondo después de renderizarla, en orden de registro (una vez por nivel). Las registra essentia-styles (p. ej. la pirámide de blur) mientras alguna primitiva las necesite. No es $state: es un Set mutable que se recorre en cada frame. |
captureLevels | readonly CaptureLevel[] | — | Niveles de captura activos en el último frame renderizado, del más profundo al de más adelante (como mínimo uno mientras BackgroundCapture esté montado). Los escribe BackgroundCapture en cada captura: no es $state, se lee en el render (ver captureFor). |
quality | Quality | — | Calidad por defecto de las primitivas que la heredan (<Glass quality>). Asignada por EssentiaRoot desde su prop quality. |
dirtyGlass | Set<Object3D> | — | Glass que cambiaron desde la última captura sin que cambie nada más (ver invalidateGlass). Los lee y vacía BackgroundCapture en cada frame que renderiza. No es $state: se escribe y se lee en el render loop. |
requestGlassFrame | (() => void) | null | — | Pide el frame de invalidateGlass sin marcar el fondo como cambiado. Lo conecta BackgroundCapture; sin él invalidateGlass devuelve false. |
invalidateGlass | (mesh: Object3D) => boolean | — | Pide un frame porque cambió **solo** un Glass (hover, press, specular animado): lo que hay detrás de él no cambió, así que la captura de su nivel y las de los inferiores siguen vigentes y solo se rehacen las de los niveles que lo incluyen (z mayor). Cualquier otra invalidación en el mismo frame (invalidate() de Threlte, una task con autoInvalidate) vuelve a capturar todo: no usar esta API nunca deja una captura vieja. Solo para cambios que no tocan el fondo; un Glass que se mueve o cambia de tamaño va por invalidate(). |
captureFor | (z: number) => CaptureLevel | null | — | Nivel de captura que muestrea un Glass a z de mundo z: el último cuyo z es <= al dado, así nunca muestrea la captura en la que se dibuja. Hay que llamarlo en el render (p. ej. en onBeforeRender): los niveles se reagrupan en cada captura. null si BackgroundCapture no está montado. |