OGL Engine 1.2.0-dev
Loading...
Searching...
No Matches
camera.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <glm/glm.hpp>
4#include "../defs.hpp"
5
6namespace Engine::Scene {
7 class ICamera {
8 private:
9 int mViewWidth, mViewHeight;
10 glm::vec2 mPosition = {0.0f, 0.0f};
11 float mZoom = 1.0f;
12
13 public:
14 ICamera(int width, int height);
15 ~ICamera() = default;
16
17 void SetPosition(glm::vec2 pos);
18 void SetViewSize(int width, int height);
19 void SetZoom(float zoom);
20 int GetViewWidth() const;
21 int GetViewHeight() const;
22 glm::vec2 GetPosition() const;
23 float GetZoom() const;
24 Rectangle GetFrustum() const;
25
26 virtual void OnUpdate(float deltaTime);
27 virtual glm::mat4 GetProjectionMatrix() const = 0;
28 virtual glm::mat4 GetViewMatrix() const = 0;
29 };
30
31 class Camera2D : public ICamera {
32 private:
33 struct LerpAnimation {
34 glm::vec2 start;
35 glm::vec2 end;
36
37 bool animating = false;
38 float progress = 0.0f;
39 float duration = 1.0f;
40 } lerpAnim;
41
42 public:
43 Camera2D(int width, int height);
44
45 void LerpPosition(glm::vec2 targetPos, float duration = 1.0f);
46
47 void OnUpdate(float deltaTime) override;
48 glm::mat4 GetProjectionMatrix() const override;
49 glm::mat4 GetViewMatrix() const override;
50 };
51}
void OnUpdate(float deltaTime) override
Definition camera.cpp:50
glm::mat4 GetViewMatrix() const override
Definition camera.cpp:69
glm::mat4 GetProjectionMatrix() const override
Definition camera.cpp:62
void LerpPosition(glm::vec2 targetPos, float duration=1.0f)
Definition camera.cpp:42
Camera2D(int width, int height)
Definition camera.cpp:40
ICamera(int width, int height)
Definition camera.cpp:7
Rectangle GetFrustum() const
Definition camera.cpp:20
int GetViewHeight() const
Definition camera.cpp:35
void SetViewSize(int width, int height)
Definition camera.cpp:9
virtual glm::mat4 GetProjectionMatrix() const =0
void SetZoom(float zoom)
Definition camera.cpp:14
virtual glm::mat4 GetViewMatrix() const =0
int GetViewWidth() const
Definition camera.cpp:36
virtual void OnUpdate(float deltaTime)
Definition camera.cpp:34
void SetPosition(glm::vec2 pos)
Definition camera.cpp:30
float GetZoom() const
Definition camera.cpp:37
glm::vec2 GetPosition() const
Definition camera.cpp:18
Définit des types de données utilisés dans le moteur.
Definition registry.hpp:23
Définition d'une structure rectangle qui est défini par la position de deux points : min et max.
Definition defs.hpp:22