camera view

This commit is contained in:
wass08
2026-01-22 08:14:42 +09:00
parent 36d45fe695
commit 1f23792f9c
12 changed files with 239 additions and 39 deletions
+10 -1
View File
@@ -44,9 +44,18 @@ type GridEvents = {
[K in `grid:${EventSuffix}`]: GridEvent;
};
export interface CameraControlEvent {
nodeId: AnyNode["id"];
}
type CameraControlEvents = {
"camera-controls:view": CameraControlEvent;
"camera-controls:capture": CameraControlEvent;
};
type EditorEvents = GridEvents &
NodeEvents<"wall", WallEvent> &
NodeEvents<"item", ItemEvent> &
NodeEvents<"building", BuildingEvent>;
NodeEvents<"building", BuildingEvent> &
CameraControlEvents;
export const emitter = mitt<EditorEvents>();
+5 -1
View File
@@ -1,6 +1,7 @@
// Store
export type {
CameraControlEvent,
EventSuffix,
GridEvent,
ItemEvent,
@@ -14,7 +15,10 @@ export {
sceneRegistry,
useRegistry,
} from './hooks/scene-registry/scene-registry'
export { initSpatialGridSync, resolveLevelId } from './hooks/spatial-grid/spatial-grid-sync'
export {
initSpatialGridSync,
resolveLevelId,
} from './hooks/spatial-grid/spatial-grid-sync'
export { useSpatialQuery } from './hooks/spatial-grid/use-spatial-query'
// Schema
export * from './schema'
+6
View File
@@ -28,6 +28,9 @@ type ViewerState = {
hoveredId: AnyNode["id"] | null;
setHoveredId: (id: AnyNode["id"] | null) => void;
cameraMode: "perspective" | "orthographic";
setCameraMode: (mode: "perspective" | "orthographic") => void;
levelMode: "stacked" | "exploded" | "solo" | "manual";
setLevelMode: (mode: "stacked" | "exploded" | "solo" | "manual") => void;
@@ -43,6 +46,9 @@ const useViewer = create<ViewerState>()((set, get) => ({
hoveredId: null,
setHoveredId: (id) => set({ hoveredId: id }),
cameraMode: "perspective",
setCameraMode: (mode) => set({ cameraMode: mode }),
levelMode: "stacked",
setLevelMode: (mode) => set({ levelMode: mode }),