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

62 lines
1.3 KiB
TypeScript

import {
Vector2,
Intersection,
Object3D,
ColorRepresentation,
Vector3,
} from 'three';
import { WorldFile } from './world-file';
export interface MousePositionEvent {
position: Vector2;
positionGL: Vector2;
}
export interface MouseMoveEvent extends MousePositionEvent {
offset: Vector2;
offsetGL: Vector2;
helper?: boolean;
}
export interface MouseButtonEvent extends MousePositionEvent {
button: number;
helper?: boolean;
target?: Intersection<Object3D>;
shift?: boolean;
control?: boolean;
alt?: boolean;
}
export interface EnvironmentEvent {
sunColor?: ColorRepresentation;
sunPosition?: Vector3;
sunStrength?: number;
ambientColor?: ColorRepresentation;
ambientStrength?: number;
clearColor?: ColorRepresentation;
}
export interface ChangeEvent {
object: Object3D;
property: string;
value: any;
edited?: boolean;
transformed?: boolean;
}
export interface SceneTreeEvent {
world: Object3D;
environment: EnvironmentEvent;
}
export type EngineEvents = {
error: (error: Error) => void;
mouseDown: (event: MouseButtonEvent) => void;
mouseUp: (event: MouseButtonEvent) => void;
mouseMove: (event: MouseMoveEvent) => void;
setEnvironment: (event: EnvironmentEvent) => void;
change: (event: ChangeEvent) => void;
resize: (event: Vector2) => void;
initialized: () => void;
};