refactor: remove ortho camera & move camera component to camera module
This commit is contained in:
parent
10d4a523eb
commit
eca1bc91e6
9 changed files with 9 additions and 111 deletions
|
@ -1,3 +1,3 @@
|
|||
add_library_module(camera camera.cpp ortho.cpp scene.cpp)
|
||||
add_library_module(camera camera.cpp scene.cpp)
|
||||
|
||||
target_link_libraries(camera PUBLIC glm::glm)
|
||||
|
|
|
@ -1,56 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <glm/glm.hpp>
|
||||
|
||||
namespace Light {
|
||||
|
||||
class OrthographicCamera
|
||||
{
|
||||
public:
|
||||
OrthographicCamera(
|
||||
const glm::vec2 &position,
|
||||
float aspectRatio,
|
||||
float zoomLevel,
|
||||
const glm::vec4 &clearColor = glm::vec4(0.1f, 0.3f, 0.7f, 1.0f)
|
||||
);
|
||||
|
||||
void calculate_view();
|
||||
|
||||
void calculate_projection();
|
||||
|
||||
void on_resize(const glm::vec2 &size);
|
||||
|
||||
[[nodiscard]] auto get_view() const -> const glm::mat4 &
|
||||
{
|
||||
return m_view;
|
||||
}
|
||||
|
||||
[[nodiscard]] auto get_projection() const -> const glm::mat4 &
|
||||
{
|
||||
return m_projection;
|
||||
}
|
||||
|
||||
[[nodiscard]] auto get_clear_color() const -> const glm::vec4 &
|
||||
{
|
||||
return m_clear_color;
|
||||
}
|
||||
|
||||
void move(const glm::vec2 &position);
|
||||
|
||||
private:
|
||||
glm::vec2 m_position;
|
||||
|
||||
float m_aspect_ratio;
|
||||
|
||||
float m_zoom_level;
|
||||
|
||||
const glm::vec3 m_up;
|
||||
|
||||
glm::mat4 m_projection {};
|
||||
|
||||
glm::mat4 m_view {};
|
||||
|
||||
glm::vec4 m_clear_color;
|
||||
};
|
||||
|
||||
} // namespace Light
|
|
@ -1,49 +0,0 @@
|
|||
#include <camera/ortho.hpp>
|
||||
#include <glm/gtc/matrix_transform.hpp>
|
||||
#include <glm/matrix.hpp>
|
||||
|
||||
namespace Light {
|
||||
|
||||
OrthographicCamera::OrthographicCamera(
|
||||
const glm::vec2 &position,
|
||||
float aspect_ratio,
|
||||
float zoom_level,
|
||||
const glm::vec4 &clear_color /* = glm::vec4(0.1f, 0.3f, 0.7f, 1.0f) */
|
||||
)
|
||||
: m_up(0.0f, 1.0f, 0.0f)
|
||||
, m_position(position)
|
||||
, m_aspect_ratio(aspect_ratio)
|
||||
, m_zoom_level(zoom_level)
|
||||
, m_clear_color(clear_color)
|
||||
{
|
||||
}
|
||||
|
||||
void OrthographicCamera::calculate_view()
|
||||
{
|
||||
m_view = glm::lookAt(glm::vec3(m_position, 100.0f), glm::vec3(m_position, 0.0f), m_up);
|
||||
}
|
||||
|
||||
void OrthographicCamera::calculate_projection()
|
||||
{
|
||||
m_projection = glm::ortho(
|
||||
-m_zoom_level * m_aspect_ratio,
|
||||
+m_zoom_level * m_aspect_ratio,
|
||||
-m_zoom_level,
|
||||
+m_zoom_level,
|
||||
FLT_MAX,
|
||||
FLT_MIN
|
||||
);
|
||||
}
|
||||
|
||||
void OrthographicCamera::on_resize(const glm::vec2 &size)
|
||||
{
|
||||
m_aspect_ratio = size.x / size.y;
|
||||
calculate_projection();
|
||||
}
|
||||
|
||||
void OrthographicCamera::move(const glm::vec2 &position)
|
||||
{
|
||||
m_position += position;
|
||||
}
|
||||
|
||||
} // namespace Light
|
|
@ -1,6 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
#include <engine/scene/components/camera.hpp>
|
||||
#include <engine/scene/components/native_script.hpp>
|
||||
#include <engine/scene/components/sprite_renderer.hpp>
|
||||
#include <engine/scene/components/tag.hpp>
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
#include <renderer/renderer.hpp>
|
||||
#include <camera/component.hpp>
|
||||
#include <engine/scene/components.hpp>
|
||||
#include <engine/scene/entity.hpp>
|
||||
#include <engine/scene/scene.hpp>
|
||||
#include <glm/glm.hpp>
|
||||
#include <renderer/renderer.hpp>
|
||||
|
||||
namespace Light {
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
#include <renderer/texture.hpp>
|
||||
#include <engine/scene/components.hpp>
|
||||
#include <asset_manager/asset_manager.hpp>
|
||||
#include <camera/component.hpp>
|
||||
#include <engine/scene/components.hpp>
|
||||
#include <engine/utils/serializer.hpp>
|
||||
#include <renderer/texture.hpp>
|
||||
|
||||
namespace YAML {
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include <asset_manager/asset_manager.hpp>
|
||||
#include <camera/component.hpp>
|
||||
#include <engine/utils/serializer.hpp>
|
||||
#include <input/key_codes.hpp>
|
||||
#include <mirror/editor_layer.hpp>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include <engine/scene/components.hpp>
|
||||
#include <asset_manager/asset_manager.hpp>
|
||||
#include <camera/component.hpp>
|
||||
#include <engine/scene/components.hpp>
|
||||
#include <glm/glm.hpp>
|
||||
#include <glm/gtc/type_ptr.hpp>
|
||||
#include <imgui.h>
|
||||
|
|
Loading…
Add table
Reference in a new issue