@param {Camera} camera
(camera)
| 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) { |
| 63 | camera.eye = camera.target.sub(forward.add(right.mul(this.speed)).normal().mul(forwardMag)); |
| 64 | } |
| 65 | |
| 66 | if (this.isLeftPressed) { |
| 67 | camera.eye = camera.target.sub(forward.sub(right.mul(this.speed)).normal().mul(forwardMag)); |
| 68 | } |
| 69 | } |
| 70 | } |
| 71 | |
| 72 | export class Camera { |