aboutsummaryrefslogtreecommitdiff
path: root/src/playerCamera.c
diff options
context:
space:
mode:
authornathansmithsmith <thenathansmithsmith@gmail.com>2023-07-07 00:57:19 -0600
committernathansmithsmith <thenathansmithsmith@gmail.com>2023-07-07 00:57:19 -0600
commit028cf5d33d99274deea9567159a4eb07c13ef85c (patch)
treeb2d9f0ae8fb640fdbe1a41114c7c8314f9223103 /src/playerCamera.c
parent416a5cbab21c480ae9e85b07fd9424452cbcb611 (diff)
This fucker is flying
Diffstat (limited to 'src/playerCamera.c')
-rw-r--r--src/playerCamera.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/playerCamera.c b/src/playerCamera.c
new file mode 100644
index 0000000..4b9530f
--- /dev/null
+++ b/src/playerCamera.c
@@ -0,0 +1,34 @@
+#include "playerCamera.h"
+#include "game.h"
+
+void initPlayerCamera(Camera3D * camera) {
+ *camera = (Camera3D){
+ //.position = (Vector3){15.0, 15.0, 15.0},
+ .position = (Vector3){0.0, 15.0, -15.0},
+ .target = (Vector3){0.0, 0.0, 0.0},
+ .up = (Vector3){0.0, 1.0, 0.0},
+ .fovy = 45.0,
+ .projection = CAMERA_PERSPECTIVE
+ };
+}
+
+void updatePlayerCamera(Camera3D * camera, Game * game) {
+ //UpdateCamera(camera, CAMERA_FIRST_PERSON);
+ camera->target = game->ship.position;
+
+ Matrix m = QuaternionToMatrix(QuaternionInvert(game->ship.rotation));
+ Vector3 pos = (Vector3){0.0, CAMERA_DIS/2, -CAMERA_DIS};
+
+ camera->position = (Vector3){
+ m.m0 * pos.x + m.m1 * pos.y + m.m2 * pos.z,
+ m.m4 * pos.x + m.m5 * pos.y + m.m6 * pos.z,
+ m.m8 * pos.x + m.m9 * pos.y + m.m10 * pos.z
+ };
+
+ camera->position = Vector3Add(camera->position, game->ship.position);
+ camera->up = (Vector3){
+ m.m1 + m.m2,
+ m.m5 + m.m6,
+ m.m9 + m.m10
+ };
+}