diff options
| author | Jan Nils Ferner <contact@jnferner.com> | 2023-01-26 20:32:03 +0100 |
|---|---|---|
| committer | Jan Nils Ferner <contact@jnferner.com> | 2023-01-26 20:32:03 +0100 |
| commit | 83a9c08b2c1070bf93710cb8c01ceb371021f74e (patch) | |
| tree | 4a65432ceac399d529702638c55b33b17a4bb8db /src | |
| parent | 18c59417def70a4d93632ca37786b529b969eee3 (diff) | |
| download | rapier-83a9c08b2c1070bf93710cb8c01ceb371021f74e.tar.gz rapier-83a9c08b2c1070bf93710cb8c01ceb371021f74e.tar.bz2 rapier-83a9c08b2c1070bf93710cb8c01ceb371021f74e.zip | |
Apply translation left
Diffstat (limited to 'src')
| -rw-r--r-- | src/control/character_controller.rs | 9 |
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; |
