freeblox/packages/editor/src/editor/types/events.ts

55 lines
1.4 KiB
TypeScript

import { EngineEvents } from '@freeblox/engine';
import { Euler, Object3D, Vector3 } from 'three';
export interface TransformEvent {
object: Object3D;
position: Vector3;
rotation: Euler;
scale: Vector3;
}
export type TransformModeEvent = 'translate' | 'rotate' | 'scale' | null;
export interface TransformCompleteEvent extends TransformEvent {
lastPosition: Vector3;
lastRotation: Euler;
lastScale: Vector3;
}
export interface SelectionEvent {
object: Object3D;
selection: Object3D[];
multi?: boolean;
picker?: boolean;
}
export interface SelectEvent {
object: Object3D;
multi?: boolean;
}
export type Events = {
transformStart: (event: TransformEvent) => void;
transformChange: (event: TransformCompleteEvent) => void;
transformEnd: (event: TransformEvent) => void;
transformMode: (event: TransformModeEvent) => void;
transformSnap: (event: number) => void;
transformRotationSnap: (event: number) => void;
select: (event: SelectEvent) => void;
selected: (event: SelectionEvent) => void;
deselected: (event: SelectionEvent) => void;
undo: () => void;
redo: () => void;
cut: () => void;
copy: () => void;
delete: () => void;
duplicate: () => void;
group: () => void;
selectAll: () => void;
insert: (type: string) => void;
paste: (event: Object3D | undefined) => void;
resetHistory: () => void;
};
export type EditorEvents = Events & EngineEvents;