summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--main/camera.cpp4
-rw-r--r--shaders/tile-shader.hpp2
2 files changed, 4 insertions, 2 deletions
diff --git a/main/camera.cpp b/main/camera.cpp
index c3a3b2f7..5b8c4b52 100644
--- a/main/camera.cpp
+++ b/main/camera.cpp
@@ -56,8 +56,10 @@ void app::recalc_cursor_tile()
global_coords app::pixel_to_tile(Vector2d position) const
{
+ constexpr Vector2d pixel_size{dTILE_SIZE[0], dTILE_SIZE[1]};
+ constexpr Vector2d half{.5, .5};
const Vector2d px = position - Vector2d{windowSize()}*.5 - _shader.camera_offset()*.5;
- const Vector2d vec = tile_shader::unproject(px) / Vector2d{dTILE_SIZE[0]*.5, dTILE_SIZE[1]*.5} + Vector2d{.5, .5};
+ const Vector2d vec = tile_shader::unproject(px) / pixel_size + half;
const auto x = (std::int32_t)std::floor(vec[0]), y = (std::int32_t)std::floor(vec[1]);
return { x, y };
}
diff --git a/shaders/tile-shader.hpp b/shaders/tile-shader.hpp
index d538c4cc..93f78a1c 100644
--- a/shaders/tile-shader.hpp
+++ b/shaders/tile-shader.hpp
@@ -55,7 +55,7 @@ constexpr Vector2d tile_shader::project(const Vector3d pt)
constexpr Vector2d tile_shader::unproject(const Vector2d px)
{
const auto X = px[0], Y = px[1];
- return { X/2 + 50 * Y / 59, 50 * Y / 59 - X/2 };
+ return { X + 100 * Y / 59, 100 * Y / 59 - X };
}
} // namespace floormat