MCPcopy Create free account
hub / github.com/cartesiancs/map3d / Car

Function Car

src/three/Car.tsx:7–148  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

5import { useCarStore } from "@/state/carStore";
6
7const Car = () => {
8 const carRef = useRef(null);
9 const { camera } = useThree();
10 const thirdMode = useCarStore((state) => state.thirdMode);
11 const setThirdMode = useCarStore((state) => state.setThirdMode);
12 const keys = useRef({ w: false, s: false, a: false, d: false });
13 const velocity = useRef(0);
14
15 const handleKeyDown = useCallback((e) => {
16 switch (e.key.toLowerCase()) {
17 case "w":
18 keys.current.w = true;
19 break;
20 case "s":
21 keys.current.s = true;
22 break;
23 case "a":
24 keys.current.a = true;
25 break;
26 case "d":
27 keys.current.d = true;
28 break;
29 case "escape":
30 setThirdMode(false);
31 if (document.exitPointerLock) {
32 document.exitPointerLock();
33 }
34 break;
35 default:
36 break;
37 }
38 }, []);
39
40 const handleKeyUp = useCallback((e) => {
41 switch (e.key.toLowerCase()) {
42 case "w":
43 keys.current.w = false;
44 break;
45 case "s":
46 keys.current.s = false;
47 break;
48 case "a":
49 keys.current.a = false;
50 break;
51 case "d":
52 keys.current.d = false;
53 break;
54 default:
55 break;
56 }
57 }, []);
58
59 useEffect(() => {
60 window.addEventListener("keydown", handleKeyDown);
61 window.addEventListener("keyup", handleKeyUp);
62 return () => {
63 window.removeEventListener("keydown", handleKeyDown);
64 window.removeEventListener("keyup", handleKeyUp);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected