zone editor
This commit is contained in:
@@ -2,6 +2,7 @@ import type { ThreeEvent } from "@react-three/fiber";
|
||||
import mitt from "mitt";
|
||||
import type { BuildingNode, ItemNode, WallNode } from "../schema";
|
||||
import type { AnyNode } from "../schema/types";
|
||||
import type { Zone } from "../schema/zone";
|
||||
|
||||
// Base event interfaces
|
||||
export interface GridEvent {
|
||||
@@ -18,6 +19,13 @@ export interface NodeEvent<T extends AnyNode = AnyNode> {
|
||||
nativeEvent: ThreeEvent<PointerEvent>;
|
||||
}
|
||||
|
||||
export interface ZoneEvent {
|
||||
zone: Zone;
|
||||
position: [number, number, number];
|
||||
stopPropagation: () => void;
|
||||
nativeEvent: ThreeEvent<PointerEvent>;
|
||||
}
|
||||
|
||||
export type WallEvent = NodeEvent<WallNode>;
|
||||
export type ItemEvent = NodeEvent<ItemNode>;
|
||||
export type BuildingEvent = NodeEvent<BuildingNode>;
|
||||
@@ -52,10 +60,15 @@ type CameraControlEvents = {
|
||||
"camera-controls:view": CameraControlEvent;
|
||||
"camera-controls:capture": CameraControlEvent;
|
||||
};
|
||||
type ZoneEvents = {
|
||||
[K in `zone:${EventSuffix}`]: ZoneEvent;
|
||||
};
|
||||
|
||||
type EditorEvents = GridEvents &
|
||||
NodeEvents<"wall", WallEvent> &
|
||||
NodeEvents<"item", ItemEvent> &
|
||||
NodeEvents<"building", BuildingEvent> &
|
||||
ZoneEvents &
|
||||
CameraControlEvents;
|
||||
|
||||
export const emitter = mitt<EditorEvents>();
|
||||
|
||||
Reference in New Issue
Block a user