diff --git a/src/camera.c b/src/camera.c index 40885140..b637b1e4 100644 --- a/src/camera.c +++ b/src/camera.c @@ -162,14 +162,24 @@ void SetCameraMode(int mode) cameraMode = mode; } -// Update camera with position -// TODO: I don't like how this function works right now... not clear enough... -Camera UpdateCamera(Vector3 *position) +// Update camera (player position is ignored) +void UpdateCamera(Camera *camera) { - // Calculate camera + Vector3 position = { 0, 0, 0 }; + + // Process internal camera and player position (if required) + if (cameraMode != CAMERA_CUSTOM) ProcessCamera(&internalCamera, &position); + + *camera = internalCamera; +} + +// Update camera and player position (1st person and 3rd person cameras) +void UpdateCameraPlayer(Camera *camera, Vector3 *position) +{ + // Process internal camera and player position (if required) if (cameraMode != CAMERA_CUSTOM) ProcessCamera(&internalCamera, position); - return internalCamera; + *camera = internalCamera; } // Set internal camera position diff --git a/src/camera.h b/src/camera.h index 93929c2a..ed85320a 100644 --- a/src/camera.h +++ b/src/camera.h @@ -76,7 +76,8 @@ extern "C" { // Prevents name mangling of functions // Module Functions Declaration //---------------------------------------------------------------------------------- void SetCameraMode(int mode); // Set camera mode (multiple camera modes available) -Camera UpdateCamera(Vector3 *position); // Update camera and player position (1st person and 3rd person cameras) +void UpdateCamera(Camera *camera); // Update camera (player position is ignored) +void UpdateCameraPlayer(Camera *camera, Vector3 *position); // Update camera and player position (1st person and 3rd person cameras) void SetCameraPosition(Vector3 position); // Set internal camera position void SetCameraTarget(Vector3 target); // Set internal camera target