55 lines
1.4 KiB
TypeScript
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;
|