webgl/src/client/camera.ts

38 lines
1019 B
TypeScript
Raw Normal View History

2020-11-27 12:12:24 +00:00
// @ts-ignore
import mat4 from 'gl-mat4';
/**
* Updates the camera position depending on keyboard input
* @param {any} context the program context
*/
export function updateCamera(context: any) {
2020-11-29 11:02:55 +00:00
const mat = mat4.create();
mat4.rotateY(mat, mat, context.params.camRot.y);
2020-11-27 12:12:24 +00:00
if (context.params.keyboard.a) {
2020-11-29 11:02:55 +00:00
context.params.camPos.x += mat[0];
context.params.camPos.y += mat[4];
context.params.camPos.z += mat[8];
2020-11-27 12:12:24 +00:00
}
if (context.params.keyboard.d) {
2020-11-29 11:02:55 +00:00
context.params.camPos.x -= mat[0];
context.params.camPos.y -= mat[4];
context.params.camPos.z -= mat[8];
2020-11-27 12:12:24 +00:00
}
if (context.params.keyboard.space) {
context.params.camPos.y -= 1;
}
2020-11-27 12:36:06 +00:00
if (context.params.keyboard.shift) {
2020-11-27 12:12:24 +00:00
context.params.camPos.y += 1;
}
if (context.params.keyboard.w) {
2020-11-29 11:02:55 +00:00
context.params.camPos.x += mat[2];
context.params.camPos.y += mat[6];
context.params.camPos.z += mat[10];
2020-11-27 12:12:24 +00:00
}
if (context.params.keyboard.s) {
2020-11-29 11:02:55 +00:00
context.params.camPos.x -= mat[2];
context.params.camPos.y -= mat[6];
context.params.camPos.z -= mat[10];
2020-11-27 12:12:24 +00:00
}
}