import { Scene, WebGLRenderer, AudioListener } from 'three'; import { Component } from '../component'; import { Intersect, SceneJson, IntersectComponent } from './type'; import { CameraComponent } from '../render/camera'; import { Hook } from '../hook'; declare const WORLD_HOOK: Hook; declare class World extends Hook { private _raycaster; private _mouse; private _clock; private _eventListeners; private _loopId; private _enabled; readonly id: string; readonly components: Component[]; readonly domElement: HTMLDivElement; readonly scene: Scene; readonly renderer: WebGLRenderer; readonly camera: CameraComponent; readonly listener: AudioListener; readonly viewport: { width: number; height: number; left: number; top: number; }; container?: Element; constructor(options: { container?: Element; }); loop: () => void; start(container: Element): void; stop(): void; dispose(): void; resize(): void; on(type: T, listenner: (event: GlobalEventHandlersEventMap[T]) => void): void; un(type: T, listenner: (event: GlobalEventHandlersEventMap[T]) => void): void; /**射线检测,检测的3D对象的material不能为数组,否则会导致报错 */ mouseRay(event: MouseEvent, coms: T[], sub?: boolean, camera?: CameraComponent): Intersect | null; add(...coms: Component[]): void; remove(...coms: Component[]): void; find(id: string): Component | import("../render/group/type").GroupChildren | null; track(id: string): import("../render/group/type").GroupChildren[] | Component[] | null; loadJson(json: SceneJson): Promise; } export { WORLD_HOOK, World };