diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2022-12-08 12:00:45 +0100 |
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2022-12-08 12:00:45 +0100 |
| commit | 9acf4738b15738cb2b9646481b75ba0c05a01e78 (patch) | |
| tree | d8a8ce5007ea77f86d33136cdfa014e45d31d72b /src | |
| parent | a083f5c2124a6a907727b35a5c43d8175d396d73 (diff) | |
draw, editor: visualize bounding boxes
Diffstat (limited to 'src')
| -rw-r--r-- | src/chunk-bbox.cpp | 14 | ||||
| -rw-r--r-- | src/chunk.hpp | 4 |
2 files changed, 9 insertions, 9 deletions
diff --git a/src/chunk-bbox.cpp b/src/chunk-bbox.cpp index 8d99515b..b951da10 100644 --- a/src/chunk-bbox.cpp +++ b/src/chunk-bbox.cpp @@ -118,7 +118,7 @@ auto chunk::query_collisions(Vector4s vec, collision type) const -> Query { const_cast<chunk&>(*this).ensure_passability(); loose_quadtree::BoundingBox<std::int16_t> bbox { vec[0], vec[1], vec[2], vec[3] }; - return { lqt_from_collision_type(type).QueryIntersectsRegion(bbox) }; + return { lqt_from_collision_type(type)->QueryIntersectsRegion(bbox) }; } auto chunk::query_collisions(Vector2s position, Vector2us size, collision type) const -> Query @@ -127,7 +127,7 @@ auto chunk::query_collisions(Vector2s position, Vector2us size, collision type) constexpr auto half = sTILE_SIZE2/2; const auto start = position - half; loose_quadtree::BoundingBox<std::int16_t> bbox {start[0], start[1], (Short)size[0], (Short)size[1] }; - return { lqt_from_collision_type(type).QueryIntersectsRegion(bbox) }; + return { lqt_from_collision_type(type)->QueryIntersectsRegion(bbox) }; } auto chunk::query_collisions(local_coords p, Vector2us size, Vector2s offset, collision type) const -> Query @@ -136,19 +136,19 @@ auto chunk::query_collisions(local_coords p, Vector2us size, Vector2s offset, co const auto pos = Vector2s(p.x, p.y) * sTILE_SIZE2 + offset; const auto start = pos - Vector2s(size/2); loose_quadtree::BoundingBox<std::int16_t> bbox { start[0], start[1], (Short)size[0], (Short)size[1] }; - return { lqt_from_collision_type(type).QueryIntersectsRegion(bbox) }; + return { lqt_from_collision_type(type)->QueryIntersectsRegion(bbox) }; } -auto chunk::lqt_from_collision_type(collision type) const noexcept -> lqt& +auto chunk::lqt_from_collision_type(collision type) const noexcept -> lqt* { switch (type) { case collision::move: - return *_lqt_move; + return _lqt_move.get(); case collision::shoot: - return *_lqt_shoot; + return _lqt_shoot.get(); case collision::view: - return *_lqt_view; + return _lqt_view.get(); } fm_abort("wrong collision type '%hhu'", std::uint8_t(type)); } diff --git a/src/chunk.hpp b/src/chunk.hpp index d0df8e5d..ebe58d5a 100644 --- a/src/chunk.hpp +++ b/src/chunk.hpp @@ -107,6 +107,8 @@ struct chunk final Query query_collisions(local_coords p, Vector2us size, Vector2s offset, collision type) const; Query query_collisions(Vector4s vec, collision type) const; + lqt* lqt_from_collision_type(collision type) const noexcept; + private: std::array<std::shared_ptr<tile_atlas>, TILE_COUNT> _ground_atlases; std::array<std::uint8_t, TILE_COUNT> ground_indexes = {}; @@ -129,8 +131,6 @@ private: _walls_modified : 1 = true, _scenery_modified : 1 = true, _pass_modified : 1 = true; - - lqt& lqt_from_collision_type(collision type) const noexcept; static std::unique_ptr<lqt> make_lqt(); void cleanup_lqt(); }; |
