MCPcopy Create free account
hub / github.com/DjDeveloperr/deno_desktop / CameraController

Class CameraController

examples/hello_camera.js:5–70  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3import { Vector3, Matrix4, PerspectiveFov, Deg } from "./extern/gmath.bundle.js";
4
5export class CameraController {
6 speed = 0;
7 isLeftPressed = false;
8 isRightPressed = false;
9 isForwardPressed = false;
10 isBackwardPressed = false;
11
12 constructor(speed) {
13 this.speed = speed;
14 }
15
16 onEvent(event) {
17 if (event.type === "windowEvent") {
18 event = event.event;
19 if (event.type === "keyboardInput") {
20 const pressed = event.input.state === "pressed";
21
22 switch (event.input.keyCode) {
23 case 57416: // up
24 this.isForwardPressed = pressed;
25 break;
26
27 case 57424: // down
28 this.isBackwardPressed = pressed;
29 break;
30
31 case 57419: // left
32 this.isLeftPressed = pressed;
33 break;
34
35 case 57421: // right
36 this.isRightPressed = pressed;
37 break;
38 }
39 }
40 }
41 }
42
43 /** @param {Camera} camera */
44 updateCamera(camera) {
45 let forward = camera.target.sub(camera.eye);
46 const forwardNorm = forward.normal();
47 let forwardMag = forward.mag();
48
49 if (this.isForwardPressed && forwardMag > this.speed) {
50 camera.eye = camera.eye.add(forwardNorm.mul(this.speed));
51 }
52
53 if (this.isBackwardPressed) {
54 camera.eye = camera.eye.sub(forwardNorm.mul(this.speed));
55 }
56
57 const right = forwardNorm.cross(camera.up);
58
59 forward = camera.target.sub(camera.eye);
60 forwardMag = forward.mag();
61
62 if (this.isRightPressed) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected