zone editor

This commit is contained in:
wass08
2026-01-22 12:24:55 +09:00
parent 17363a9c11
commit eb0ccac30f
6 changed files with 346 additions and 8 deletions
+13
View File
@@ -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>();