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_
							 |