Files
armorpaint/base/tests/fall/sources/camera.ts
T
luboslenco 974926c04d Cleanup
2025-03-11 19:49:42 +01:00

48 lines
1.6 KiB
TypeScript

function camera_update() {
let camera: camera_object_t = scene_camera;
let move_forward: bool = keyboard_down("w");
let move_backward: bool = keyboard_down("s");
let strafe_left: bool = keyboard_down("a");
let strafe_right: bool = keyboard_down("d");
let strafe_up: bool = keyboard_down("e");
let strafe_down: bool = keyboard_down("q");
let fast: f32 = keyboard_down("shift") ? 2.0 : 1.0;
let speed: f32 = 5.0;
let dir: vec4_t = vec4_create();
if (move_forward || move_backward || strafe_right || strafe_left || strafe_up || strafe_down) {
let clook: vec4_t = camera_object_look(camera);
let cright: vec4_t = camera_object_right(camera);
if (move_forward) {
dir = vec4_fadd(dir, clook.x, clook.y, clook.z);
}
if (move_backward) {
dir = vec4_fadd(dir, -clook.x, -clook.y, -clook.z);
}
if (strafe_right) {
dir = vec4_fadd(dir, cright.x, cright.y, cright.z);
}
if (strafe_left) {
dir = vec4_fadd(dir, -cright.x, -cright.y, -cright.z);
}
if (strafe_up) {
dir = vec4_fadd(dir, 0, 0, 1);
}
if (strafe_down) {
dir = vec4_fadd(dir, 0, 0, -1);
}
}
let d: f32 = sys_delta() * speed * fast;
if (d > 0.0) {
transform_move(camera.base.transform, dir, d);
}
if (mouse_down()) {
transform_rotate(camera.base.transform, vec4_z_axis(), -mouse_movement_x / 200);
transform_rotate(camera.base.transform, camera_object_right(camera), -mouse_movement_y / 200);
}
}