45 lines
878 B
C++
45 lines
878 B
C++
#include "camera.hpp"
|
|
#include "math.hpp"
|
|
#include "log.hpp"
|
|
|
|
// for now only pass-through placeholder functions,
|
|
// since we draw the whole map
|
|
|
|
|
|
void Camera::Pan(const WorldPos& delta)
|
|
{
|
|
m_Pan += delta;
|
|
}
|
|
|
|
void Camera::Zoom(float delta)
|
|
{
|
|
constexpr float ZOOM_SCALE = 0.1f;
|
|
m_Zoom += delta * ZOOM_SCALE;
|
|
LOG_DEBUG("Zoom: ", m_Zoom);
|
|
}
|
|
|
|
WindowPos Camera::WorldToWindow(WorldPos world) const
|
|
{
|
|
const auto& v = world + m_Pan;
|
|
return WindowPos{v[0], v[1]} * m_Zoom;
|
|
}
|
|
|
|
WorldPos Camera::WindowToWorld(WindowPos window) const
|
|
{
|
|
window /= m_Zoom;
|
|
return WorldPos{window[0], window[1]} - m_Pan;
|
|
}
|
|
|
|
|
|
WindowSize Camera::WorldToWindowSize(WorldSize world) const
|
|
{
|
|
const auto& v = world;
|
|
// no zoom yet, just pass-through
|
|
return WindowSize{v[0], v[1]};
|
|
}
|
|
|
|
WorldSize Camera::WindowToWorldSize(WindowSize window) const
|
|
{
|
|
return WorldSize{window[0], window[1]};
|
|
}
|