Kohi Game Engine
kcamera_system.h
Go to the documentation of this file.
1 
13 #pragma once
14 
15 #include "defines.h"
16 #include "math/math_types.h"
17 
19 typedef struct kcamera_system_config {
25 
27 
28 typedef u8 kcamera;
29 
30 typedef enum kcamera_type {
31  // Will use orthographic projection
33  // Will use perspective projection.
36 
37 #define DEFAULT_KCAMERA 0
38 #define INVALID_KCAMERA INVALID_ID_U8
39 
50 b8 kcamera_system_initialize(u64* memory_requirement, void* state, void* config);
51 
57 void kcamera_system_shutdown(void* state);
58 
72 KAPI kcamera kcamera_create(kcamera_type type, rect_2di vp_rect, vec3 position, vec3 euler_rotation, f32 fov_radians, f32 near_clip, f32 far_clip);
73 
75 
82 
89 
91 KAPI void kcamera_set_position(kcamera camera, vec3 position);
93 KAPI void kcamera_set_euler_rotation(kcamera camera, vec3 euler_rotation);
94 KAPI void kcamera_set_euler_rotation_radians(kcamera camera, vec3 euler_rotation_radians);
96 KAPI void kcamera_set_fov(kcamera camera, f32 fov);
98 KAPI void kcamera_set_near_clip(kcamera camera, f32 near_clip);
100 KAPI void kcamera_set_far_clip(kcamera camera, f32 far_clip);
102 KAPI void kcamera_set_vp_rect(kcamera camera, rect_2di vp_rect);
103 
109 
117 
125 
133 
141 
149 
157 
166 KAPI void kcamera_move_direction(kcamera camera, vec3 direction, b8 normalize_dir, f32 amount);
167 
174 KAPI void kcamera_move_forward(kcamera camera, f32 amount);
175 
182 KAPI void kcamera_move_backward(kcamera camera, f32 amount);
183 
190 KAPI void kcamera_move_left(kcamera camera, f32 amount);
191 
198 KAPI void kcamera_move_right(kcamera camera, f32 amount);
199 
206 KAPI void kcamera_move_up(kcamera camera, f32 amount);
207 
214 KAPI void kcamera_move_down(kcamera camera, f32 amount);
215 
222 KAPI void kcamera_yaw(kcamera camera, f32 amount);
223 
230 KAPI void kcamera_pitch(kcamera camera, f32 amount);
This file contains global type definitions which are used throughout the entire engine and applicatio...
#define KAPI
Import/export qualifier.
Definition: defines.h:209
_Bool b8
8-bit boolean type
Definition: defines.h:60
float f32
32-bit floating point number
Definition: defines.h:49
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:30
unsigned char u8
Unsigned 8-bit integer.
Definition: defines.h:21
KAPI void kcamera_set_position(kcamera camera, vec3 position)
KAPI kfrustum kcamera_get_frustum(kcamera camera)
KAPI void kcamera_move_backward(kcamera camera, f32 amount)
Moves the camera backward by the given amount.
KAPI vec3 kcamera_get_position(kcamera camera)
KAPI vec3 kcamera_down(kcamera camera)
Returns a copy of the camera's down vector.
KAPI void kcamera_yaw(kcamera camera, f32 amount)
Adjusts the camera's yaw by the given amount.
KAPI kcamera kcamera_system_get_default(void)
Gets a handle to the default camera.
KAPI void kcamera_move_direction(kcamera camera, vec3 direction, b8 normalize_dir, f32 amount)
Moves the camera forward by the given amount.
KAPI mat4 kcamera_get_transform(kcamera camera)
KAPI f32 kcamera_get_far_clip(kcamera camera)
struct kcamera_system_config kcamera_system_config
The camera system configuration.
b8 kcamera_system_initialize(u64 *memory_requirement, void *state, void *config)
Initializes the camera system. Should be called twice; once to get the memory requirement (passing st...
KAPI mat4 kcamera_get_projection(kcamera camera)
KAPI void kcamera_set_euler_rotation_radians(kcamera camera, vec3 euler_rotation_radians)
KAPI void kcamera_move_up(kcamera camera, f32 amount)
Moves the camera up (straight along the y-axis, not the camera's up vector) by the given amount.
KAPI void kcamera_set_vp_rect(kcamera camera, rect_2di vp_rect)
KAPI kcamera kcamera_create(kcamera_type type, rect_2di vp_rect, vec3 position, vec3 euler_rotation, f32 fov_radians, f32 near_clip, f32 far_clip)
Creates a new camera using the provided parameters and returns a handle to it.
KAPI void kcamera_destroy(kcamera camera)
Releases the given camera.
KAPI vec3 kcamera_backward(kcamera camera)
Returns a copy of the camera's backward vector.
KAPI vec3 kcamera_get_euler_rotation(kcamera camera)
KAPI f32 kcamera_get_near_clip(kcamera camera)
KAPI void kcamera_move_left(kcamera camera, f32 amount)
Moves the camera left by the given amount.
KAPI vec3 kcamera_right(kcamera camera)
Returns a copy of the camera's right vector.
KAPI void kcamera_set_fov(kcamera camera, f32 fov)
KAPI void kcamera_set_euler_rotation(kcamera camera, vec3 euler_rotation)
KAPI vec3 kcamera_forward(kcamera camera)
Returns a copy of the camera's forward vector.
KAPI void kcamera_move_right(kcamera camera, f32 amount)
Moves the camera right by the given amount.
KAPI kcamera kcamera_clone(kcamera camera)
KAPI vec3 kcamera_up(kcamera camera)
Returns a copy of the camera's up vector.
void kcamera_system_shutdown(void *state)
Shuts down the camera system.
KAPI vec3 kcamera_left(kcamera camera)
Returns a copy of the camera's left vector.
u8 kcamera
Definition: kcamera_system.h:28
KAPI mat4 kcamera_get_view(kcamera camera)
KAPI f32 kcamera_get_fov(kcamera camera)
KAPI mat4 kcamera_get_projection_far_clipped(kcamera camera, f32 far)
KAPI rect_2di kcamera_get_vp_rect(kcamera camera)
kcamera_type
Definition: kcamera_system.h:30
@ KCAMERA_TYPE_3D
Definition: kcamera_system.h:34
@ KCAMERA_TYPE_2D
Definition: kcamera_system.h:32
KAPI void kcamera_set_far_clip(kcamera camera, f32 far_clip)
KAPI void kcamera_move_forward(kcamera camera, f32 amount)
Moves the camera forward by the given amount.
KAPI void kcamera_move_down(kcamera camera, f32 amount)
Moves the camera down (straight along the y-axis, not the camera's up vector) by the given amount.
KAPI void kcamera_set_near_clip(kcamera camera, f32 near_clip)
KAPI void kcamera_pitch(kcamera camera, f32 amount)
Adjusts the camera's pitch by the given amount.
Contains various math types required for the engine.
The camera system configuration.
Definition: kcamera_system.h:19
u8 max_camera_count
NOTE: The maximum number of cameras that can be managed by the system.
Definition: kcamera_system.h:24
Definition: math_types.h:500
a 4x4 matrix, typically used to represent object transformations.
Definition: math_types.h:383
A 3-element vector.
Definition: math_types.h:117
A 4-element integer-based vector.
Definition: math_types.h:574