Suckless OGL 1.0.0
A lean, high-performance C11 PBR Renderer
Loading...
Searching...
No Matches
camera.c File Reference
#include "camera.h"
#include "bool_utils.h"
#include <cglm/cam.h>
#include <cglm/types.h>
#include <cglm/util.h>
#include <cglm/vec3.h>
#include <math.h>
Include dependency graph for camera.c:

Functions

void camera_init (Camera *cam, float distance, float yaw, float pitch)
 Initializes the camera with default values.
 
void camera_update_vectors (Camera *cam)
 Recalculates front, right, and up vectors from yaw and pitch.
 
void camera_build_keyboard_input (Camera *cam)
 Converts boolean keyboard flags into move_input.
 
void camera_fixed_update (Camera *cam)
 Performs one fixed-step physics update.
 
void camera_process_mouse (Camera *cam, float xoffset, float yoffset)
 Processes mouse movement to update target orientation.
 
void camera_get_view_matrix (Camera *cam, mat4 view)
 Generates the 4x4 view matrix for this camera.
 
void camera_process_scroll (Camera *cam, float yoffset)
 Processes mouse scroll events to apply physical impulse.
 

Function Documentation

◆ camera_build_keyboard_input()

void camera_build_keyboard_input ( Camera *  cam)

Converts boolean keyboard flags into move_input.

Writes cam->move_input from cam->move_forward/backward/left/right/up/down. Values are binary (0 or ±1). Call before gamepad overlay and camera_fixed_update each physics step.

Parameters
camPointer to the camera instance.

◆ camera_fixed_update()

void camera_fixed_update ( Camera *  cam)

Performs one fixed-step physics update.

Reads move_input to build target_velocity, then applies momentum, friction, and head-bobbing. move_input must be set before calling (via camera_build_keyboard_input and/or gamepad overlay).

Parameters
camPointer to the camera instance.

◆ camera_get_view_matrix()

void camera_get_view_matrix ( Camera *  cam,
mat4  view 
)

Generates the 4x4 view matrix for this camera.

Parameters
camPointer to the camera instance.
[out]viewMatrix to populate.

◆ camera_init()

void camera_init ( Camera *  cam,
float  distance,
float  yaw,
float  pitch 
)

Initializes the camera with default values.

Parameters
camPointer to the camera instance.
distanceInitial forward offset (legacy).
yawInitial horizontal rotation.
pitchInitial vertical rotation.
Here is the call graph for this function:

◆ camera_process_mouse()

void camera_process_mouse ( Camera *  cam,
float  xoffset,
float  yoffset 
)

Processes mouse movement to update target orientation.

Parameters
camPointer to the camera instance.
xoffsetRelative horizontal mouse movement.
yoffsetRelative vertical mouse movement.

◆ camera_process_scroll()

void camera_process_scroll ( Camera *  cam,
float  yoffset 
)

Processes mouse scroll events to apply physical impulse.

Parameters
camPointer to the camera instance.
yoffsetScroll amount along the y-axis.

◆ camera_update_vectors()

void camera_update_vectors ( Camera *  cam)

Recalculates front, right, and up vectors from yaw and pitch.

Parameters
camPointer to the camera instance.
Note
Updates cam->front, cam->right, and cam->up.