UNPKG

@lifeart/gxt

Version:

<img align="right" width="95" height="95" alt="Philosopher’s stone, logo of PostCSS" src="./public/logo.png">

51 lines (49 loc) • 1.91 kB
import { Cell } from '../../reactive'; import { Camera, Scene, WebGLRenderer, Object3D, Raycaster, Vector2 } from 'three'; export declare const TRES_CONTEXT: unique symbol; export interface TresContextState { scene: Scene; camera: Cell<Camera | null>; cameras: Cell<Camera[]>; renderer: Cell<WebGLRenderer | null>; raycaster: Raycaster | null; pointer: Vector2 | null; onBeforeRender: Set<(state: TresContextState, delta: number) => void>; onAfterRender: Set<(state: TresContextState, delta: number) => void>; interactiveObjects: Set<Object3D>; isRunning: Cell<boolean>; } export interface TresContext { /** The Three.js scene */ scene: Scene; /** Get the active camera */ getCamera(): Camera | null; /** Get all registered cameras */ getCameras(): Camera[]; /** Get the WebGL renderer */ getRenderer(): WebGLRenderer | null; /** Register a callback to run before each render */ onBeforeRender(callback: (state: TresContextState, delta: number) => void): () => void; /** Register a callback to run after each render */ onAfterRender(callback: (state: TresContextState, delta: number) => void): () => void; /** Register an object for pointer events */ registerInteractiveObject(object: Object3D): void; /** Unregister an object from pointer events */ unregisterInteractiveObject(object: Object3D): void; /** Pause the render loop */ pause(): void; /** Resume the render loop */ resume(): void; /** Check if the render loop is running */ isRunning(): boolean; /** Internal state (for advanced use) */ state: TresContextState; } /** * Create a new Tres context state */ export declare function createTresContextState(scene: Scene): TresContextState; /** * Create a Tres context from state */ export declare function createTresContext(state: TresContextState): TresContext;