diff --git a/packages/framework/src/index.ts b/packages/framework/src/index.ts index 1e36f26..a7c126a 100644 --- a/packages/framework/src/index.ts +++ b/packages/framework/src/index.ts @@ -4,7 +4,7 @@ export type { IDisposable, DisposableItem } from "./utils"; // Drag & drop utilities export { dragDropEventEffect, DragDropEventType } from "./utils"; -export type { DragDropEvent } from "./utils"; +export type { DragDropEvent, DragDropCallback } from "./utils"; // Data-driven object spawning export { spawnEffect } from "./spawner"; diff --git a/packages/framework/src/utils/dnd.ts b/packages/framework/src/utils/dnd.ts index 2709ea2..2b9c7ba 100644 --- a/packages/framework/src/utils/dnd.ts +++ b/packages/framework/src/utils/dnd.ts @@ -18,8 +18,11 @@ export type DragDropEvent = { deltaY: number; }; +export type DragDropCallback = (event: DragDropEvent) => void; + export function dragDropEventEffect( gameObject: Phaser.GameObjects.GameObject, + callback: DragDropCallback, disposables?: DisposableBag, ): () => void { let isDragging = false; @@ -35,8 +38,7 @@ export function dragDropEventEffect( deltaX: 0, deltaY: 0, }; - gameObject.emit("drag", event); - gameObject.emit("dragstart", event); + callback(event); } function onPointerUp(pointer: Phaser.Input.Pointer) { @@ -46,8 +48,7 @@ export function dragDropEventEffect( const deltaX = pointer.x - down.x; const deltaY = pointer.y - down.y; const event: DragDropEvent = { type: DragDropEventType.UP, deltaX, deltaY }; - gameObject.emit("drag", event); - gameObject.emit("dragend", event); + callback(event); down = null; } @@ -61,8 +62,7 @@ export function dragDropEventEffect( deltaX, deltaY, }; - gameObject.emit("drag", event); - gameObject.emit("dragmove", event); + callback(event); } gameObject.on("pointerdown", onPointerDown); diff --git a/packages/framework/src/utils/index.ts b/packages/framework/src/utils/index.ts index 6cbd009..4847db9 100644 --- a/packages/framework/src/utils/index.ts +++ b/packages/framework/src/utils/index.ts @@ -4,4 +4,5 @@ export { dragDropEventEffect, DragDropEventType, type DragDropEvent, + type DragDropCallback, } from "./dnd";