import { useEffect } from "react"; import { OrbitControls } from "@react-three/drei"; import { EditorMap } from "@/components/editor/scene/EditorMap"; import { FlyController } from "@/controls/editor/FlyController"; import type { MapNode, TransformMode, SceneData } from "@/types/editor"; interface EditorSceneProps { sceneData: SceneData; selectedNodeIndex: number | null; onSelectNode: (index: number | null) => void; hoveredNodeIndex: number | null; onHoverNode: (index: number | null) => void; transformMode: TransformMode; onTransformModeChange: (mode: TransformMode) => void; onTransformStart: () => void; onTransformEnd: () => void; onNodeTransform: (nodeIndex: number, transform: MapNode) => void; onUndo: () => void; onRedo: () => void; isPlayerMode?: boolean; } export function EditorScene({ sceneData, selectedNodeIndex, onSelectNode, hoveredNodeIndex, onHoverNode, transformMode, onTransformModeChange, onTransformStart, onTransformEnd, onNodeTransform, onUndo, onRedo, isPlayerMode = false, }: EditorSceneProps): React.JSX.Element { useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if (e.ctrlKey || e.metaKey) { if (e.key === "z" || e.key === "Z") { e.preventDefault(); onUndo(); return; } if (e.key === "y" || e.key === "Y") { e.preventDefault(); onRedo(); return; } } if (selectedNodeIndex !== null) { switch (e.key.toLowerCase()) { case "escape": onSelectNode(null); break; case "t": onTransformModeChange("translate"); break; case "r": onTransformModeChange("rotate"); break; case "s": onTransformModeChange("scale"); break; } } }; window.addEventListener("keydown", handleKeyDown); return () => window.removeEventListener("keydown", handleKeyDown); }, [selectedNodeIndex, onSelectNode, onTransformModeChange, onUndo, onRedo]); return ( <> {isPlayerMode ? ( ) : ( )} ); }