UNPKG

mylingo3d

Version:

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

35 lines (31 loc) 1.35 kB
import TexturedBasicMixin from "../../display/core/mixins/TexturedBasicMixin" import TexturedStandardMixin from "../../display/core/mixins/TexturedStandardMixin" import ObjectManager from "../../display/core/ObjectManager" import { container } from "../../engine/renderLoop/renderSetup" import { setDragEvent } from "../../states/useDragEvent" container.addEventListener("dragenter", (e) => e.preventDefault()) container.addEventListener("dragover", (e) => e.preventDefault()) container.addEventListener("dragleave", (e) => e.preventDefault()) container.addEventListener("drop", (e) => e.preventDefault()) document.addEventListener("drop", (e) => e.preventDefault()) export default <T>( onDrop: ( draggingItem: T, hitManager?: ObjectManager | TexturedBasicMixin | TexturedStandardMixin ) => ObjectManager | undefined ) => { let draggingItem: T | undefined container.addEventListener( "dragover", (e) => draggingItem && setDragEvent(e) ) container.addEventListener("dragleave", () => setDragEvent(undefined)) container.addEventListener( "drop", () => draggingItem && setDragEvent((hitManager) => onDrop(draggingItem!, hitManager)) ) return (val: T | undefined) => (draggingItem = val) } export const dragImage = document.createElement("img")