39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
#ifndef CAMERA_H_
 | 
						|
#define CAMERA_H_
 | 
						|
 | 
						|
#define GLM_ENABLE_EXPERIMENTAL
 | 
						|
#include <glm/glm.hpp>
 | 
						|
#include <glm/gtc/matrix_transform.hpp>
 | 
						|
#include <glm/gtx/transform.hpp>
 | 
						|
#include <glm/gtc/type_ptr.hpp>
 | 
						|
 | 
						|
#include "transform.h"
 | 
						|
 | 
						|
struct Camera {
 | 
						|
    Transform transform;
 | 
						|
    float focalLength; // In mm
 | 
						|
    float sensorHeight;
 | 
						|
    float nearPlane;
 | 
						|
    float farPlane;
 | 
						|
};
 | 
						|
 | 
						|
namespace CameraControls {
 | 
						|
    void TranslateCamera(Camera& camera, const glm::vec3& translationDelta);
 | 
						|
    void RotateCamera(Camera& camera, const glm::vec3& rotationDelta);
 | 
						|
 | 
						|
    void SetPosition(Camera& camera, const glm::vec3& position);
 | 
						|
    void SetRotation(Camera& camera, const glm::vec3& rotation);
 | 
						|
 | 
						|
    glm::vec3 GetPosition(Camera& camera);
 | 
						|
    glm::vec3 GetCenter(Camera& camera);
 | 
						|
    float GetFOV(Camera& camera);
 | 
						|
 | 
						|
    void AdjustFocalLength(Camera& camera, float focalLength);
 | 
						|
    void AdjustSensorHeight(Camera& camera, float sensorHeight);
 | 
						|
    void AdjustNearPlane(Camera& camera, float nearPlane);
 | 
						|
    void AdjustFarPlane(Camera& camera, float farPlane);
 | 
						|
 | 
						|
    glm::mat4 GetViewMatrix(Camera& camera);
 | 
						|
}
 | 
						|
 | 
						|
#endif // CAMERA_H_
 |