Program Listing for File Camera.hpp
↰ Return to documentation for file (engine/include/Cacao/Camera.hpp
)
#pragma once
#include "glm/glm.hpp"
#include "EventManager.hpp"
#include "DllHelper.hpp"
namespace Cacao {
class CACAO_API Camera {
public:
Camera()
: resizeConsumer(std::bind(&Camera::ResizeProjectionMatrix, this, std::placeholders::_1)), clearColor(1) {
EventManager::Get().SubscribeConsumer("WindowResize", resizeConsumer);
}
virtual ~Camera() {
EventManager::Get().UnsubscribeConsumer("WindowResize", resizeConsumer);
}
virtual glm::vec3 GetPosition() const = 0;
virtual void SetPosition(glm::vec3 pos) = 0;
virtual glm::vec3 GetRotation() const = 0;
virtual void SetRotation(glm::vec3 rot) = 0;
virtual glm::mat4 GetProjectionMatrix() const = 0;
virtual glm::mat4 GetViewMatrix() const = 0;
virtual void ResizeProjectionMatrix(Event& e) = 0;
private:
EventConsumer resizeConsumer;
glm::vec4 clearColor;
};
}