import { ContextManager, Observable, Context } from '@zcomponent/core'; import * as THREE from 'three'; import { Object3D } from './components/Object3D'; import { IRenderPass } from './effectpipeline'; export interface ThreeSceneContextConstructorProps { scene?: THREE.Scene; camera?: THREE.Camera; } /** * Manages a Three.js scene context, handling the scene, camera, rendering passes, and other scene-related configurations. * Provides observables for scene properties and methods for managing pointer event listeners. * * @zcontext */ export declare class ThreeSceneContext extends Context { constructorProps: ThreeSceneContextConstructorProps; scene: THREE.Scene; activeCamera: Observable; renderPass: IRenderPass; renderPriority: Observable; readonly autoClear: Observable; readonly autoClearDepth: Observable; readonly hotspotObjects: THREE.Object3D[]; readonly pointerEventListenerByObject: Map, Object3D>; private _objectsWithPointerEventBindings; private _unregisterByObject3D; /** * Initializes a new instance of the ThreeSceneContext, setting up the scene, camera, and render pass. * * @param {ContextManager} contextManager - The context manager for the environment. * @param {ThreeSceneContextConstructorProps} constructorProps - Properties for constructing the scene context, including scene and camera. */ constructor(contextManager: ContextManager, constructorProps: ThreeSceneContextConstructorProps); registerPointerEventListener(obj: Object3D): void; unregisterPointerEventListener(obj: Object3D): void; dispose(): never; } /** * Utility function to access the active camera Observable within a `ThreeSceneContext`. * * @param {ContextManager} ctx - The context manager instance. * @return {Observable} The observable for the active camera. */ export declare function useCamera(ctx: ContextManager): Observable; /** * Utility function to access the scene from a `ThreeSceneContext`. * * @param {ContextManager} ctx - The context manager instance. * @return {THREE.Scene} The Three.js scene associated with the context. */ export declare function useScene(ctx: ContextManager): THREE.Scene;