From 85ade98d72850f1db2549f665c4fc51961e1611a Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Fri, 7 Apr 2023 21:08:32 +0200 Subject: prevent character clipping through walls/doors --- src/chunk-collision.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/chunk-collision.cpp') diff --git a/src/chunk-collision.cpp b/src/chunk-collision.cpp index aceafc3f..dfb0fdd6 100644 --- a/src/chunk-collision.cpp +++ b/src/chunk-collision.cpp @@ -12,6 +12,8 @@ chunk::RTree* chunk::rtree() noexcept { ensure_passability(); return &_rtree; } namespace { +constexpr float wall_depth = 8, wall_depth_2 = wall_depth*.5f; + constexpr Vector2 tile_start(size_t k) { constexpr auto half_tile = Vector2(TILE_SIZE2)/2; @@ -35,14 +37,14 @@ constexpr Pair whole_tile(size_t k) constexpr Pair wall_north(size_t k) { - auto min = tile_start(k) - Vector2(0, 1); - return { min, min + Vector2(TILE_SIZE2[0], 2), }; + auto min = tile_start(k) - Vector2(0, wall_depth_2); + return { min, min + Vector2(TILE_SIZE2[0], wall_depth), }; } constexpr Pair wall_west(size_t k) { - auto min = tile_start(k) - Vector2(1, 0); - return { min, min + Vector2(2, TILE_SIZE2[1]), }; + auto min = tile_start(k) - Vector2(wall_depth_2, 0); + return { min, min + Vector2(wall_depth, TILE_SIZE2[1]), }; } constexpr object_id make_id(collision_type type, pass_mode p, object_id id) -- cgit v1.2.3