import { Vector3, Color3, Mesh, TransformNode, StandardMaterial, Camera, DynamicTexture } from 'babylonjs'; import { GridMaterial } from 'babylonjs-materials'; import { Tween } from './tween'; import { BabyThing } from '../frontend/babything'; import { BabyGUI } from '../frontend/babyGUI'; import { Babylon } from '../backend/babylon'; import { Rectangle } from 'babylonjs-gui'; import { Remote } from './remote'; import { PhysicsImpostor, PhysicsViewer, PhysicsHelper } from 'babylonjs'; export declare type Observer = (msg?: object) => void; export declare class BabyEngine { static shapeMap: Map; static observers: { [type: string]: Observer[]; }; static remote: Remote; static babylonShapes: Babylon; static impostors: PhysicsImpostor[]; static ENV_FILE: object; static frozen: boolean; static physicsViewer: PhysicsViewer; static physicsHelper: PhysicsHelper; url: URL; constructor(); static broadcastToPlayers(cmd: gameCmd): Tween; static processGameCmd(cmd: gameCmd): Tween | null; static addObserver(type: string, observer: Observer, t?: object): void; static notifyObservers(type: string, msg?: object): void; static removeObserver(type: string, observer: Observer): void; static processTweens(): void; static getEnv(): Promise; } export declare class MeshHandle { uuid: number; model: string; thing: Object; type: 'mesh' | 'camera' | 'light' | 'GUI'; babylonMesh: Mesh | Camera; babylonRectangle: Rectangle; babyShape: BabyThing | BabyGUI; bottom: TransformNode; top: TransformNode; material: StandardMaterial; dynamicTexture: DynamicTexture; gridMaterial: GridMaterial; size: Vector3; diffuseColor: Color3; opacity: number; tweenArray: Tween[]; collider: 'ghost' | 'solid' | 'active'; lastCollisionTime: number; mass: number; restitution: number; uniqueName: string; description: string; fontsize: number; isPenDown: boolean; radius: number; lastPosition: Vector3; lineArray: Mesh[]; constructor(model: string, uuid: number); cleanBeforeDispose(): void; maybeAddLineSegment(): void; getPosition(): Vector3; /** not all materials have a diffuseColor (eg: GridMaterial does not) */ hasDiffuseColor(): boolean; } export interface gameCmd { action: string; uuid: number; timestamp?: number; model?: string; colorD?: string; colorA?: string; colorE?: string; colorS?: string; lineColor?: string; opacity?: number; direction?: 'forward' | 'backward' | 'left' | 'right' | 'up' | 'down'; distance?: number; towards?: 'forward' | 'backward' | 'left' | 'right' | 'tiltLeft' | 'tiltRight'; angle?: number; duration?: number; animate?: '1-Begin And End Normally' | '2-Begin Slow, End Fast' | '3-Begin Fast, End Slow' | '4-Begin And End Fast' | '5-Begin And End Slow'; tweenCmd?: gameCmd; gridRatio?: number; major?: number; x?: number; y?: number; z?: number; dx?: number; dy?: number; dz?: number; marker?: string; rest?: string; cameraType?: string; heightOffset?: number; rotation?: number; otherUuid?: number; otherHandle?: MeshHandle; collider?: 'ghost' | 'solid' | 'active'; directory?: string; filename?: string; stringParm?: string; radius?: number; resolution?: number; size?: number; player?: number; yesno?: boolean; color?: string; background?: string; leftRight?: number; topBottom?: number; text?: string; fontsize?: number; resize?: true; width?: number; height?: number; params?: string; ctxFunction?: string; }