From 3434255ce6ef1ca0df1dc5ffd4e875cb4697e8f8 Mon Sep 17 00:00:00 2001 From: raysan5 Date: Mon, 13 Jul 2015 18:17:05 +0200 Subject: [PATCH] Decoupling camera system from raylib main library --- src/camera.c | 3 ++- src/camera.h | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 src/camera.h diff --git a/src/camera.c b/src/camera.c index 1aa39ca8..cde118c9 100644 --- a/src/camera.c +++ b/src/camera.c @@ -23,7 +23,8 @@ * **********************************************************************************************/ -#include "raylib.h" +#include "camera.h" + #include //---------------------------------------------------------------------------------- diff --git a/src/camera.h b/src/camera.h new file mode 100644 index 00000000..cb5f2bde --- /dev/null +++ b/src/camera.h @@ -0,0 +1,69 @@ +/******************************************************************************************* +* +* raylib Camera System - Camera Modes Setup and Control Functions +* +* Copyright (c) 2015 Marc Palau and Ramon Santamaria +* +* This software is provided "as-is", without any express or implied warranty. In no event +* will the authors be held liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, including commercial +* applications, and to alter it and redistribute it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not claim that you +* wrote the original software. If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but is not required. +* +* 2. Altered source versions must be plainly marked as such, and must not be misrepresented +* as being the original software. +* +* 3. This notice may not be removed or altered from any source distribution. +* +**********************************************************************************************/ + +#ifndef CAMERA_H +#define CAMERA_H + +#include "raylib.h" + +//---------------------------------------------------------------------------------- +// Defines and Macros +//---------------------------------------------------------------------------------- +//... + +//---------------------------------------------------------------------------------- +// Types and Structures Definition +//---------------------------------------------------------------------------------- +// Camera modes +typedef enum { CAMERA_CUSTOM = 0, CAMERA_FREE, CAMERA_ORBITAL, CAMERA_FIRST_PERSON, CAMERA_THIRD_PERSON } CameraMode; + + +#ifdef __cplusplus +extern "C" { // Prevents name mangling of functions +#endif + +//---------------------------------------------------------------------------------- +// Global Variables Definition +//---------------------------------------------------------------------------------- +//... + +//---------------------------------------------------------------------------------- +// Module Functions Declaration +//---------------------------------------------------------------------------------- +void SetCameraMode(int mode); // Select camera mode (multiple camera modes available) +Camera UpdateCamera(Vector3 *position); // Update camera with position + +void SetCameraControls(int front, int left, int back, int right, int up, int down); +void SetCameraMouseSensitivity(float sensitivity); +void SetCameraResetPosition(Vector3 resetPosition); +void SetCameraResetControl(int resetKey); +void SetCameraPawnControl(int pawnControlKey); +void SetCameraFnControl(int fnControlKey); +void SetCameraSmoothZoomControl(int smoothZoomControlKey); +void SetCameraOrbitalTarget(Vector3 target); + +#ifdef __cplusplus +} +#endif + +#endif // CAMERA_H