summaryrefslogtreecommitdiff
path: root/src/Entities
diff options
context:
space:
mode:
Diffstat (limited to 'src/Entities')
-rw-r--r--src/Entities/Player.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp
index 4fa481e..5d41ad0 100644
--- a/src/Entities/Player.cpp
+++ b/src/Entities/Player.cpp
@@ -19,10 +19,10 @@ void Player::update(const Time& time, GFX::Window& window, GFX::Camera& camera,
auto destination = m_transform.position() + direction * move_speed;
auto collisions = colliding_terrain(destination, world);
- if (!collisions.empty()) {
- for (auto collision : collisions) {
- destination = collision_reposition(m_transform.position(), destination, collision);
- }
+ for (auto collision : collisions) {
+ auto original = destination;
+ destination = collision_reposition(m_transform.position(), destination, collision);
+ if (!original.mostly_equal(destination)) break;
}
move_to(destination);
@@ -97,7 +97,7 @@ Position::World Player::position_for_bounding_box(AABB box) {
Position::World Player::collision_reposition(Position::World from, Position::World to, AABB colliding) {
if (from == to) return from;
- auto resulting_bounding_box = bounding_box_for_position(from).cast_box(to - from, colliding);
+ auto resulting_bounding_box = bounding_box_for_position(from).collision_response(to - from, colliding);
return position_for_bounding_box(resulting_bounding_box); // Ugly, we convert to AABB and back.
}