import * as spec from '@galacean/effects-specification'; import type { Database, SceneData } from './asset-loader'; import type { EffectsObject } from './effects-object'; import type { Material } from './material'; import type { GPUCapability, Geometry, Mesh, RenderPass, Renderer, ShaderLibrary } from './render'; import type { Scene, SceneRenderLevel } from './scene'; import type { Texture } from './texture'; import type { Disposable } from './utils'; import type { Composition } from './composition'; import type { AssetManager } from './asset-manager'; import { AssetService } from './asset-service'; import { Ticker } from './ticker'; import { EventSystem } from './plugins/interact/event-system'; import type { GLType } from './gl/create-gl-context'; import type { PointerEventData, Region } from './plugins/interact/click-handler'; import { EventEmitter } from './events'; export interface EngineOptions extends WebGLContextAttributes { name?: string; glType?: GLType; fps?: number; env?: string; manualRender?: boolean; pixelRatio?: number; notifyTouch?: boolean; interactive?: boolean; } type EngineEvent = { contextlost: [eventData: { engine: Engine; e: Event; }]; contextrestored: [engine: Engine]; rendererror: [e: Event | Error]; resize: [Engine]; click: [eventData: Region]; pointerdown: [eventData: PointerEventData]; pointerup: [eventData: PointerEventData]; pointermove: [eventData: PointerEventData]; }; /** * Engine 基类,负责维护所有 GPU 资源的管理及销毁 */ export declare class Engine extends EventEmitter implements Disposable { name: string; speed: number; displayAspect: number; displayScale: number; offscreenMode: boolean; /** * 渲染器 */ renderer: Renderer; /** * 渲染等级 */ renderLevel?: SceneRenderLevel; whiteTexture: Texture; transparentTexture: Texture; /** * GPU 能力 */ gpuCapability: GPUCapability; jsonSceneData: SceneData; objectInstance: Record; database?: Database; /** * 渲染过程中错误队列 */ renderErrors: Set; compositions: Composition[]; assetManagers: AssetManager[]; assetService: AssetService; eventSystem: EventSystem; env: string; /** * 计时器 * 手动渲染 `manualRender=true` 时不创建计时器 */ ticker: Ticker | null; canvas: HTMLCanvasElement; /** * 引擎的像素比 */ pixelRatio: number; protected _disposed: boolean; protected textures: Texture[]; protected materials: Material[]; protected geometries: Geometry[]; protected meshes: Mesh[]; protected renderPasses: RenderPass[]; private assetLoader; get disposed(): boolean; /** * */ constructor(canvas: HTMLCanvasElement, options?: EngineOptions); /** * 创建 Engine 对象。 */ static create: (canvas: HTMLCanvasElement, options?: EngineOptions) => Engine; clearResources(): void; addEffectsObjectData(data: spec.EffectsObjectData): void; findEffectsObjectData(uuid: string): spec.EffectsObjectData; addInstance(effectsObject: EffectsObject): void; /** * @ignore */ findObject(guid: spec.DataPath): T; removeInstance(id: string): void; addPackageDatas(scene: Scene): void; runRenderLoop(renderFunction: (dt: number) => void): void; render(dt: number): void; /** * 将渲染器重新和父容器大小对齐 */ resize(): void; setSize(width: number, height: number): void; private getTargetSize; addTexture(tex: Texture): void; removeTexture(tex: Texture): void; addMaterial(mat: Material): void; removeMaterial(mat: Material): void; addGeometry(geo: Geometry): void; removeGeometry(geo: Geometry): void; addMesh(mesh: Mesh): void; removeMesh(mesh: Mesh): void; addRenderPass(pass: RenderPass): void; removeRenderPass(pass: RenderPass): void; addComposition(composition: Composition): void; removeComposition(composition: Composition): void; getShaderLibrary(): ShaderLibrary; /** * 销毁所有缓存的资源 */ dispose(): void; } export {};