import * as THREE from 'three'; import { BufferGeometry, Camera, Group, Material, Mesh, Object3D, Scene, Texture } from 'three'; import { Command } from './command.js'; import { History as EditorHistory } from './history.js'; import { PandaMode } from './enums.js'; import { Selector } from './viewport.selector.js'; import { Signal } from './signals.js'; import { PandaOptions, TwinConfig } from './panda.js'; import { ViewEffectComposer } from "./effect"; interface SignalEvent { editScript: Signal; startPlayer: Signal; stopPlayer: Signal; toggleVR: Signal; exitedVR: Signal; editorCleared: Signal; savingStarted: Signal; savingFinished: Signal; transformModeChanged: Signal; snapChanged: Signal; spaceChanged: Signal; rendererCreated: Signal; rendererUpdated: Signal; sceneBackgroundChanged: Signal; sceneEnvironmentChanged: Signal; sceneFogChanged: Signal; sceneFogSettingsChanged: Signal; sceneGraphChanged: Signal; sceneRendered: Signal; cameraChanged: Signal; cameraResetted: Signal; geometryChanged: Signal; objectSelected: Signal; objectDblclick: Signal; objectContextmenu: Signal; objectMouseIn: Signal; objectMouseOut: Signal; objectFocused: Signal; objectAdded: Signal; objectChanged: Signal; objectRemoved: Signal; cameraAdded: Signal; cameraRemoved: Signal; helperAdded: Signal; helperRemoved: Signal; materialAdded: Signal; materialChanged: Signal; materialRemoved: Signal; scriptAdded: Signal; scriptChanged: Signal; scriptRemoved: Signal; windowResize: Signal; showGridChanged: Signal; showHelpersChanged: Signal; refreshSidebarObject3D: Signal; historyChanged: Signal; viewportCameraChanged: Signal; viewportShadingChanged: Signal; intersectionsDetected: Signal; } export declare enum EditorTheme { System = "system", Light = "light", Dark = "dark" } export interface CameraView { name: string; duration: number; position: any; } declare class Editor { theme: EditorTheme; signals: SignalEvent; selector: Selector; history: EditorHistory; group: Group; loader: any; camera: Camera; lookCameraObj: any[]; outlineObj: any[]; edgesObj: any[]; cameraViews: any[]; scene: Scene; sceneHelpers: Scene; object: {}; geometries: { [propname: string]: BufferGeometry; }; materials: { [propname: string]: Material; }; textures: { [propname: string]: Texture; }; scripts: { [propname: string]: string[]; }; materialsRefCounter: Map; mixer: THREE.AnimationMixer; ctrlSelectObject: number[]; selected: Object3D | null; helpers: { [propname: string]: Object3D; }; cameras: { [propname: string]: Camera; }; viewportCamera: Camera; viewportShading: string; mode: PandaMode; options?: PandaOptions; twinConfig?: TwinConfig; effectComposer: ViewEffectComposer; constructor(options?: PandaOptions); initEffectComposer(domElement: HTMLElement, renderer: THREE.WebGLRenderer): void; setScene(scene: Scene): void; addObject(object: Object3D, parent?: Object3D, index?: number): void; moveObject(object: Object3D, parent?: Object3D, before?: Object3D): void; nameObject(object: Object3D, name: string): void; removeObject(object: Object3D): void; addGeometry(geometry: BufferGeometry): void; setGeometryName(geometry: BufferGeometry, name: string): void; addMaterial(material: Material): void; addMaterialToRefCounter(material: Material): void; removeMaterial(material: Material): void; removeMaterialFromRefCounter(material: Material): void; getMaterialById(id: number): any; setMaterialName(material: Material, name: string): void; addTexture(texture: Texture): void; addCamera(camera: Camera): void; removeCamera(camera: Camera): void; addHelper(object: Object3D, helper?: Object3D): void; removeHelper(object: Object3D): void; addScript(object: Object3D, script: string): void; removeScript(object: Object3D, script: string): void; getObjectMaterial(object: Mesh, slot: number): Material; setObjectMaterial(object: Mesh, slot: number, newMaterial: Material): void; setViewportCamera(uuid: string): void; setViewportShading(value: string): void; select(object?: Object3D): void; selectAll(objects: Object3D[]): void; cancelMulti(): void; selectById(id: number): void; selectByUuid(uuid: string): void; deselect(): void; focus(object?: Object3D): void; focusById(id: number): void; clear(): void; objLookCamera(scene: Scene, camera: Camera): void; objOutline(scene: Scene, effectComposer: ViewEffectComposer): void; objEdge(scene: Scene): void; fromJSON(json: any): Promise; toJSON(): { metadata: { version: string; }; options: PandaOptions; camera: any; scene: any; scripts: { [propname: string]: string[]; }; twinConfig: TwinConfig; cameraViews: any[]; edgesObj: any[]; outlineObj: any[]; lookCameraObj: any[]; }; objectByUuid(uuid: string): THREE.Object3D; execute(cmd: Command, optionalName?: string): void; undo(): void; redo(): void; copy(object?: Object3D): Promise; paste(): Promise; importFiles(accepts?: string[]): void; merge(...mesh: Mesh[]): Mesh; } export { Editor };