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

117 lines
2.6 KiB
TypeScript
Raw Normal View History

2023-06-03 19:25:21 +00:00
import {
Vector2,
Intersection,
Object3D,
ColorRepresentation,
Vector3,
2023-06-25 11:51:16 +00:00
Quaternion,
2023-06-03 19:25:21 +00:00
} from 'three';
2023-06-25 11:51:16 +00:00
import { SerializedObject } from './game-object';
2023-06-03 19:25:21 +00:00
export interface MousePositionEvent {
position: Vector2;
2023-06-24 16:59:03 +00:00
positionNDC: Vector2;
2023-06-07 14:31:42 +00:00
raw: MouseEvent;
2023-06-03 19:25:21 +00:00
}
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;
otherTargets?: Intersection<Object3D>[];
2023-06-03 19:25:21 +00:00
}
export interface EnvironmentEvent {
sunColor?: ColorRepresentation;
sunPosition?: Vector3;
sunStrength?: number;
ambientColor?: ColorRepresentation;
ambientStrength?: number;
clearColor?: ColorRepresentation;
}
2023-06-04 10:30:20 +00:00
export interface ChangeEvent {
object: Object3D;
property: string;
value: any;
edited?: boolean;
2023-06-04 12:19:04 +00:00
applied?: boolean;
2023-06-04 10:30:20 +00:00
}
export interface SceneTreeEvent {
world: Object3D;
environment: EnvironmentEvent;
}
2023-06-04 15:25:00 +00:00
export interface RemoveEvent {
object: Object3D | Object3D[];
applied?: boolean;
}
export interface ReparentEvent {
object: Object3D | Object3D[];
parent: Object3D;
applied?: boolean;
}
2023-06-04 17:23:41 +00:00
export interface InstanceEvent {
type: string;
2023-06-25 11:51:16 +00:00
parent?: Object3D | string;
data?: SerializedObject;
}
export interface ServerTransformEvent {
object: string;
position: Vector3;
quaternion: Quaternion;
velocity?: Vector3;
angularVelocity?: Vector3;
}
export interface PlayerEvent {
velocity: Vector3;
lookAt: Vector3;
}
export interface SpawnEvent {
playerId: string;
playerName: string;
position: Vector3;
rotation: Quaternion;
2023-06-04 17:23:41 +00:00
}
2023-06-03 17:49:26 +00:00
export type EngineEvents = {
error: (error: Error) => void;
2023-06-03 19:25:21 +00:00
mouseDown: (event: MouseButtonEvent) => void;
mouseUp: (event: MouseButtonEvent) => void;
mouseMove: (event: MouseMoveEvent) => void;
setEnvironment: (event: EnvironmentEvent) => void;
2023-06-04 10:30:20 +00:00
change: (event: ChangeEvent) => void;
resize: (event: Vector2) => void;
2023-06-04 15:25:00 +00:00
remove: (event: RemoveEvent) => void;
reparent: (event: ReparentEvent) => void;
2023-06-04 17:23:41 +00:00
instance: (event: InstanceEvent) => void;
sceneJoin: (event: Object3D) => void;
sceneLeave: (event: Object3D) => void;
queueFree: (event: Object3D) => void;
2023-06-14 17:54:49 +00:00
loadComplete: () => void;
2023-06-24 18:33:01 +00:00
physicsComplete: () => void;
2023-06-04 10:30:20 +00:00
initialized: () => void;
2023-06-05 15:29:37 +00:00
reset: () => void;
2023-06-25 11:51:16 +00:00
spawnCharacter: (event: SpawnEvent) => void;
sendPlayer: (event: PlayerEvent) => void;
serverConnect: () => void;
serverTransform: (obj: ServerTransformEvent) => void;
serverDisconnect: () => void;
2023-06-03 17:49:26 +00:00
};