le2d v0.4.6
2D game engine framework
 
Loading...
Searching...
No Matches
unprojector.hpp
Go to the documentation of this file.
1#pragma once
2#include "le2d/transform.hpp"
4#include "le2d/viewport.hpp"
5
6namespace le {
8 public:
9 Unprojector() = default;
10
11 explicit Unprojector(Transform const& view, glm::vec2 const target_size) : m_inverse_view(view.to_inverse_view()), m_target_size(target_size) {}
12
13 explicit Unprojector(Viewport const& viewport, Transform const& view, glm::vec2 framebuffer_size);
14
15 [[nodiscard]] auto target_size() const -> glm::vec2 { return m_target_size; }
16
17 [[nodiscard]] auto to_target(ndc::vec2 const point) const -> glm::vec2 { return point.to_target(target_size()); }
18
19 [[nodiscard]] auto unproject(ndc::vec2 const point) const -> glm::vec2 { return unproject(to_target(point)); }
20
21 [[nodiscard]] auto unproject(glm::vec2 const point) const -> glm::vec2 { return m_inverse_view * glm::vec4{point, 0.0f, 1.0f}; }
22
23 private:
24 glm::mat4 m_inverse_view{1.0f};
25 glm::vec2 m_target_size{};
26};
27} // namespace le
Definition unprojector.hpp:7
auto target_size() const -> glm::vec2
Definition unprojector.hpp:15
auto unproject(glm::vec2 const point) const -> glm::vec2
Definition unprojector.hpp:21
Unprojector()=default
auto unproject(ndc::vec2 const point) const -> glm::vec2
Definition unprojector.hpp:19
auto to_target(ndc::vec2 const point) const -> glm::vec2
Definition unprojector.hpp:17
Unprojector(Transform const &view, glm::vec2 const target_size)
Definition unprojector.hpp:11
Unprojector(Viewport const &viewport, Transform const &view, glm::vec2 framebuffer_size)
Definition animation.hpp:8
std::variant< viewport::Dynamic, viewport::Letterbox > Viewport
Definition viewport.hpp:19
2D transformation.
Definition transform.hpp:8
Definition vector_space.hpp:11