1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#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 = 90.0,
.projection = CAMERA_PERSPECTIVE
};
}
void updatePlayerCamera(Camera3D * camera, Game * game) {
Entity * player = &game->world.entities[0];
//UpdateCamera(camera, CAMERA_FIRST_PERSON);
camera->target = player->position;
Matrix m = QuaternionToMatrix(QuaternionInvert(player->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, player->position);
camera->up = (Vector3){
m.m1 + m.m2,
m.m5 + m.m6,
m.m9 + m.m10
};
}
|