Inferno Game Engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

39 lines
893 B

#ifndef CAMERA_SYSTEM_H
#define CAMERA_SYSTEM_H
#include <memory> //std::shared_ptr
#include "entt/entity/registry.hpp" // entt::entity, entt::registry
#include "inferno/component/cameracomponent.h"
#include "inferno/component/transformcomponent.h"
#define NEAR_PLANE 0.1f
#define FAR_PLANE 100.0f
namespace Inferno {
class CameraSystem {
public:
void initialize();
void update();
void destroy();
glm::mat4 projectionView();
void setRegistry(const std::shared_ptr<entt::registry>& registry) { m_registry = registry; };
static inline CameraSystem& the() { return *s_instance; }
private:
void updateOrthographic(TransformComponent& transform, CameraComponent& camera);
void updatePerspective(TransformComponent& transform, CameraComponent& camera);
std::shared_ptr<entt::registry> m_registry;
static CameraSystem* s_instance;
};
}
#endif // CAMERA_SYSTEM_H