@turbox3d/command-manager
Version:
Large-scale productivity application command management library
36 lines (31 loc) • 1.19 kB
text/typescript
import { IConstructorOf, Vec2, Vec3 } from '@turbox3d/shared';
import { InteractiveConfig, ViewEntity, CoordinateType } from '@turbox3d/event-manager';
export interface IDeclaredMap<T> {
[key: string]: IConstructorOf<T>;
}
export type IInstanceMap<T, M extends IDeclaredMap<T>> = {
[K in keyof M]: InstanceType<M[K]>;
};
export type ComposedCommand<B, T, M extends IDeclaredMap<T>> = IConstructorOf<B & IInstanceMap<T, M>>;
export interface SceneTool {
updateInteractiveObject: (view: any, config?: InteractiveConfig) => void;
updateCursor: (cursor?: string) => void;
hitTarget: (point: { x: number; y: number }) => Partial<ViewEntity> | undefined;
coordinateTransform: (point: Vec2 | Vec3, type: CoordinateType, z?: number) => Vec2 | Vec3;
getCamera: () => any;
getRaycaster: () => any;
getScene: () => any;
getRootView: () => any;
getScreenShot: (
sx?: number,
sy?: number,
w?: number,
h?: number,
fileType?: string,
quality?: number,
isBase64?: boolean
) => Promise<string | Blob>;
getApp: () => any;
addTicker: (ticker: (deltaTime: number) => void) => void;
removeTicker: (ticker: (deltaTime: number) => void) => void;
}