Program Listing for File Camera.h¶
↰ Return to documentation for file (Source\Camera\Inc\Camera\Camera.h
)
#pragma once
#include "Types.h"
#include "Math/Core.h"
#include "Core/Events.h"
namespace Azura {
class Camera {
public:
Camera(U32 width, U32 height);
virtual ~Camera() = default;
Camera(const Camera& other) = delete;
Camera(Camera&& other) noexcept = delete;
Camera& operator=(const Camera& other) = delete;
Camera& operator=(Camera&& other) noexcept = delete;
void SetSensitivity(float value);
float GetSensitivity() const;
void SetNearClip(float value);
void SetFarClip(float value);
float GetNearClip() const;
float GetFarClip() const;
void SetFOVY(float value);
void SetPosition(Vector3f value);
void SetReferencePoint(Vector3f value);
Vector3f GetPosition() const;
Matrix4f GetViewProjMatrix() const;
Matrix4f GetInvViewProjMatrix() const;
Matrix4f GetViewMatrix() const;
Matrix4f GetProjMatrix() const;
virtual void Recompute() = 0;
virtual void Update(float timeDelta) = 0;
virtual void OnMouseEvent(MouseEvent mouseEvent) = 0;
virtual void OnKeyEvent(KeyEvent keyEvent) = 0;
protected:
U32 m_width;
U32 m_height;
float m_aspect;
float m_sensitivity{0.5f};
float m_nearClip{0.0001f};
float m_farClip{1000.0f};
float m_fovY{45.0f};
Vector3f m_eye{0, 0, 0};
Vector3f m_ref{0, 0, 0};
Matrix4f m_view;
Matrix4f m_proj;
Matrix4f m_viewProj;
Matrix4f m_invViewProj;
};
} // namespace Azura