diff options
author | nathansmithsmith <thenathansmithsmith@gmail.com> | 2023-07-07 00:57:19 -0600 |
---|---|---|
committer | nathansmithsmith <thenathansmithsmith@gmail.com> | 2023-07-07 00:57:19 -0600 |
commit | 028cf5d33d99274deea9567159a4eb07c13ef85c (patch) | |
tree | b2d9f0ae8fb640fdbe1a41114c7c8314f9223103 /src/playerCamera.c | |
parent | 416a5cbab21c480ae9e85b07fd9424452cbcb611 (diff) |
This fucker is flying
Diffstat (limited to 'src/playerCamera.c')
-rw-r--r-- | src/playerCamera.c | 34 |
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 + }; +} |