UNPKG

lingo3d

Version:

Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor

70 lines 2.46 kB
import { mouseDefaults, mouseSchema, SimpleMouseEvent } from "../interface/IMouse"; import store from "@lincode/reactivity"; import { onBeforeRender } from "../events/onBeforeRender"; import { getWorldPlayComputed } from "../states/useWorldPlayComputed"; import Appendable from "./core/Appendable"; import { onMouseDown } from "../events/onMouseDown"; import { onMouseUp } from "../events/onMouseUp"; import { onMouseRightClick } from "../events/onMouseRightClick"; import { onMouseClick } from "../events/onMouseClick"; import { onMouseMove } from "../events/onMouseMove"; class Mouse extends Appendable { static componentName = "mouse"; static defaults = mouseDefaults; static schema = mouseSchema; onClick; onRightClick; onMouseMove; onMouseDown; onMouseUp; onMousePress; constructor() { super(); let currentPayload = new SimpleMouseEvent(0, 0, 0, 0); const [setDown, getDown] = store(false); this.createEffect(() => { const { onMousePress } = this; if (!getDown() || !onMousePress) return; const handle = onBeforeRender(() => onMousePress(currentPayload)); return () => { handle.cancel(); }; }, [getDown]); this.createEffect(() => { if (!getWorldPlayComputed()) return; const handle0 = onMouseMove((e) => { this.onMouseMove?.(e); currentPayload = e; }); const handle1 = onMouseClick((e) => { this.onClick?.(e); currentPayload = e; }); const handle2 = onMouseRightClick((e) => { this.onRightClick?.(e); currentPayload = e; }); const handle3 = onMouseDown((e) => { this.onMouseDown?.(e); currentPayload = e; setDown(true); }); const handle4 = onMouseUp((e) => { this.onMouseUp?.(e); currentPayload = e; setDown(false); }); return () => { handle0.cancel(); handle1.cancel(); handle2.cancel(); handle3.cancel(); handle4.cancel(); }; }, [getWorldPlayComputed]); } } export default Mouse; //# sourceMappingURL=Mouse.js.map