aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Nils Ferner <contact@jnferner.com>2023-01-26 20:32:03 +0100
committerJan Nils Ferner <contact@jnferner.com>2023-01-26 20:32:03 +0100
commit83a9c08b2c1070bf93710cb8c01ceb371021f74e (patch)
tree4a65432ceac399d529702638c55b33b17a4bb8db
parent18c59417def70a4d93632ca37786b529b969eee3 (diff)
downloadrapier-83a9c08b2c1070bf93710cb8c01ceb371021f74e.tar.gz
rapier-83a9c08b2c1070bf93710cb8c01ceb371021f74e.tar.bz2
rapier-83a9c08b2c1070bf93710cb8c01ceb371021f74e.zip
Apply translation left
-rw-r--r--src/control/character_controller.rs9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/control/character_controller.rs b/src/control/character_controller.rs
index 9888701..91c5a98 100644
--- a/src/control/character_controller.rs
+++ b/src/control/character_controller.rs
@@ -271,13 +271,12 @@ impl KinematicCharacterController {
println!("[stair] translation_remaining: {translation_remaining:?}");
// No slopes or stairs ahead; try to move along obstacles.
- let [vertical_slope_translation, horizontal_slope_translation] =
+ let allowed_translation: Vector<Real> =
self.split_into_components(&translation_remaining)
- .map(|remaining| subtract_hit(remaining, &toi, offset));
+ .map(|remaining| subtract_hit(remaining, &toi, offset))
+ .into_iter()
+ .sum();
- let horizontal_allowed_dist =
- (toi.toi - (-toi.normal1.dot(&translation_dir)) * offset).max(0.0);
- let allowed_translation = *translation_dir * allowed_dist;
result.translation += allowed_translation;
translation_remaining -= allowed_translation;