42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
// @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) {
|
|
const xMat = mat4.create();
|
|
mat4.rotateY(xMat, xMat, context.params.camRot.y);
|
|
mat4.rotateX(xMat, xMat, context.params.camRot.x);
|
|
const zMat = mat4.create();
|
|
mat4.rotateY(zMat, zMat, context.params.camRot.y);
|
|
mat4.rotateX(zMat, zMat, context.params.camRot.x);
|
|
if (context.params.keyboard.a) {
|
|
context.params.camPos.x += xMat[0];
|
|
context.params.camPos.y += xMat[4];
|
|
context.params.camPos.z += xMat[8];
|
|
}
|
|
if (context.params.keyboard.d) {
|
|
context.params.camPos.x -= xMat[0];
|
|
context.params.camPos.y -= xMat[4];
|
|
context.params.camPos.z -= xMat[8];
|
|
}
|
|
if (context.params.keyboard.space) {
|
|
context.params.camPos.y -= 1;
|
|
}
|
|
if (context.params.keyboard.control) {
|
|
context.params.camPos.y += 1;
|
|
}
|
|
if (context.params.keyboard.w) {
|
|
context.params.camPos.x += zMat[2];
|
|
context.params.camPos.y += zMat[6];
|
|
context.params.camPos.z += zMat[10];
|
|
}
|
|
if (context.params.keyboard.s) {
|
|
context.params.camPos.x -= zMat[2];
|
|
context.params.camPos.y -= zMat[6];
|
|
context.params.camPos.z -= zMat[10];
|
|
}
|
|
}
|