54 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
#include "camera.h"
 | 
						|
 | 
						|
namespace CameraControls {
 | 
						|
    void TranslateCamera(Camera& camera, const glm::vec3& translationDelta) {
 | 
						|
        TransformControls::Translate(camera.transform, translationDelta);
 | 
						|
    }
 | 
						|
    void RotateCamera(Camera& camera, const glm::vec3& rotationDelta) {
 | 
						|
        TransformControls::Rotate(camera.transform, rotationDelta);
 | 
						|
    }
 | 
						|
 | 
						|
    void SetPosition(Camera& camera, const glm::vec3& position) {
 | 
						|
        TransformControls::SetPosition(camera.transform, position);
 | 
						|
    }
 | 
						|
    void SetRotation(Camera& camera, const glm::vec3& rotation) {
 | 
						|
        TransformControls::SetRotation(camera.transform, rotation);
 | 
						|
    }
 | 
						|
 | 
						|
    glm::vec3 GetPosition(Camera& camera) {
 | 
						|
        return camera.transform.translation;
 | 
						|
    }
 | 
						|
    glm::vec3 GetRotation(Camera& camera) {
 | 
						|
        return camera.transform.rotation;
 | 
						|
    }
 | 
						|
    glm::vec3 GetCenter(Camera& camera) {
 | 
						|
        glm::vec3 forward;
 | 
						|
        forward.x = cos(camera.transform.rotation.y) * cos(camera.transform.rotation.x);
 | 
						|
        forward.y = sin(camera.transform.rotation.x);
 | 
						|
        forward.z = sin(camera.transform.rotation.y) * cos(camera.transform.rotation.x);
 | 
						|
 | 
						|
        return GetPosition(camera) + GetRotation(camera);
 | 
						|
    }
 | 
						|
    float GetFOV(Camera& camera) {
 | 
						|
        return 2.0f * atan(camera.sensorHeight / (2.0f * camera.focalLength));
 | 
						|
    }
 | 
						|
 | 
						|
    void AdjustFocalLength(Camera& camera, float focalLength) {
 | 
						|
        camera.focalLength = focalLength;
 | 
						|
    }
 | 
						|
    void AdjustSensorHeight(Camera& camera, float sensorHeight) {
 | 
						|
        camera.sensorHeight = sensorHeight;
 | 
						|
    }
 | 
						|
    void AdjustNearPlane(Camera& camera, float nearPlane) {
 | 
						|
        camera.nearPlane = nearPlane;
 | 
						|
    }
 | 
						|
    void AdjustFarPlane(Camera& camera, float farPlane) {
 | 
						|
        camera.farPlane = farPlane;
 | 
						|
    }
 | 
						|
 | 
						|
    glm::mat4 GetViewMatrix(Camera& camera) {
 | 
						|
        //return glm::lookAt(glm::vec3(0.0f, 1.4f, 1.4f), glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f));
 | 
						|
        return glm::lookAt(GetPosition(camera), GetCenter(camera), glm::vec3(0.0f, 1.0f, 0.0f));
 | 
						|
    }
 | 
						|
}
 |