pathfinding_demo/cpp/src/camera.cpp

46 lines
920 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 / m_Zoom);
}
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]} * m_Zoom;
}
WorldSize Camera::WindowToWorldSize(WindowSize window) const
{
window /= m_Zoom;
return WorldSize{window[0], window[1]};
}