feat: add the map

This commit is contained in:
2026-04-15 16:09:02 +02:00
parent f67799db30
commit d486f6f381
26 changed files with 391 additions and 587 deletions
+68
View File
@@ -0,0 +1,68 @@
import { useEffect, useRef } from "react";
import { OrbitControls } from "@react-three/drei";
import type { OrbitControls as OrbitControlsImpl } from "three-stdlib";
import { Debug } from "@/debug/Debug";
export function DebugCameraControls(): React.JSX.Element {
const controls = useRef<OrbitControlsImpl | null>(null);
useEffect(() => {
const debug = Debug.getInstance();
if (!debug.active || !controls.current) {
return undefined;
}
const folder = debug.createFolder("Camera");
if (!folder) {
return undefined;
}
const target = controls.current.target;
const cameraState = {
targetX: target.x,
targetY: target.y,
targetZ: target.z,
};
const syncTarget = (): void => {
if (!controls.current) {
return;
}
controls.current.target.set(
cameraState.targetX,
cameraState.targetY,
cameraState.targetZ,
);
controls.current.update();
};
folder
.add(cameraState, "targetX", -100, 100, 0.1)
.name("Target X")
.onChange(syncTarget);
folder
.add(cameraState, "targetY", -20, 50, 0.1)
.name("Target Y")
.onChange(syncTarget);
folder
.add(cameraState, "targetZ", -100, 100, 0.1)
.name("Target Z")
.onChange(syncTarget);
return undefined;
}, []);
return (
<OrbitControls
ref={controls}
enableDamping
dampingFactor={0.08}
minDistance={20}
maxDistance={220}
target={[0, 12, 0]}
/>
);
}