blob: 233f5f3fec44ae2685be75fa0efc9a4134cdded2 (
plain)
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
37
|
/**
* @file camera.h
* @brief
*/
#pragma once
#include "defines.h"
#include "maths_types.h"
typedef struct Camera {
vec3 position;
vec3 front;
vec3 up;
f32 fov;
} Camera;
/** @brief create a camera */
Camera Camera_Create(vec3 pos, vec3 front, vec3 up, f32 fov);
/**
* @brief Get 3D camera transform matrix
* @param out_view optionally stores just the view matrix
* @param out_proj optionally stores just the projection matrix
* @returns the camera's view projection matrix pre-multiplied
*/
PUB mat4 Camera_ViewProj(Camera* c, f32 lens_height, f32 lens_width, mat4* out_view, mat4* out_proj);
/** @brief Get 2D camera transform matrix */
PUB mat4 Camera_View2D(Camera* c); // TODO: 2D cameras
// TODO: Basic reusable camera controls
/*
Right click + move = pan
Left click = orbit camera
WASD = forward/backward/left/right
*/
|