mylingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
53 lines (47 loc) • 1.59 kB
text/typescript
import { Point3d } from "@lincode/math"
import StaticObjectManager from "../display/core/StaticObjectManager"
import IEventLoop, { eventLoopDefaults, eventLoopSchema } from "./IEventLoop"
import Defaults from "./utils/Defaults"
import { ExtractProps } from "./utils/extractProps"
import Nullable from "./utils/Nullable"
export class LingoMouseEvent {
public constructor(
public clientX: number,
public clientY: number,
public xNorm: number,
public yNorm: number,
public point: Point3d,
public distance: number,
public target: StaticObjectManager | undefined
) {}
}
export type SimpleMouseEvent = {
clientX: number
clientY: number
}
export default interface IMouse extends IEventLoop {
onClick: Nullable<(e: SimpleMouseEvent) => void>
onRightClick: Nullable<(e: SimpleMouseEvent) => void>
onMouseMove: Nullable<(e: SimpleMouseEvent) => void>
onMouseDown: Nullable<(e: SimpleMouseEvent) => void>
onMouseUp: Nullable<(e: SimpleMouseEvent) => void>
onMousePress: Nullable<(e: SimpleMouseEvent) => void>
}
export const mouseSchema: Required<ExtractProps<IMouse>> = {
...eventLoopSchema,
onClick: Function,
onRightClick: Function,
onMouseMove: Function,
onMouseDown: Function,
onMouseUp: Function,
onMousePress: Function
}
export const mouseDefaults: Defaults<IMouse> = {
...eventLoopDefaults,
onClick: undefined,
onRightClick: undefined,
onMouseMove: undefined,
onMouseDown: undefined,
onMouseUp: undefined,
onMousePress: undefined
}