aboutsummaryrefslogtreecommitdiff
path: root/azalea/src/pathfinder/moves/basic.rs
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2025-10-07 11:06:30 +0700
committermat <git@matdoes.dev>2025-10-07 11:06:30 +0700
commit17416abd1bd1dfffafb8bb9c0407b6373631e483 (patch)
treeb474c4c682967a15bbc9cedf2c6cc7c87f4714ae /azalea/src/pathfinder/moves/basic.rs
parent6585e552d47387746f45ac4bb0f0a32d6219aa91 (diff)
downloadazalea-drasl-17416abd1bd1dfffafb8bb9c0407b6373631e483.tar.xz
several pathfinder fixes
Diffstat (limited to 'azalea/src/pathfinder/moves/basic.rs')
-rw-r--r--azalea/src/pathfinder/moves/basic.rs18
1 files changed, 11 insertions, 7 deletions
diff --git a/azalea/src/pathfinder/moves/basic.rs b/azalea/src/pathfinder/moves/basic.rs
index be97f1e3..270dc102 100644
--- a/azalea/src/pathfinder/moves/basic.rs
+++ b/azalea/src/pathfinder/moves/basic.rs
@@ -147,15 +147,19 @@ fn execute_ascend_move(mut ctx: ExecuteCtx) {
// these checks are to make sure we don't fall if our velocity is too high in
// the wrong direction
- let x_axis = (start.x - target.x).abs(); // either 0 or 1
- let z_axis = (start.z - target.z).abs(); // either 0 or 1
+ let x_axis = target.x - start.x; // -1, 0, or 1
+ let z_axis = target.z - start.z; // -1, 0, or 1
- let flat_distance_to_next = x_axis as f64 * (target_center.x - position.x)
- + z_axis as f64 * (target_center.z - position.z);
- let side_distance = z_axis as f64 * (target_center.x - position.x).abs()
- + x_axis as f64 * (target_center.z - position.z).abs();
+ let x_axis_abs = x_axis.abs(); // either 0 or 1
+ let z_axis_abs = z_axis.abs(); // either 0 or 1
- let lateral_motion = x_axis as f64 * physics.velocity.z + z_axis as f64 * physics.velocity.x;
+ let flat_distance_to_next = x_axis_abs as f64 * (target_center.x - position.x)
+ + z_axis_abs as f64 * (target_center.z - position.z);
+ let side_distance = z_axis_abs as f64 * (target_center.x - position.x).abs()
+ + x_axis_abs as f64 * (target_center.z - position.z).abs();
+
+ let lateral_motion =
+ x_axis_abs as f64 * physics.velocity.z + z_axis_abs as f64 * physics.velocity.x;
if lateral_motion.abs() > 0.1 {
return;
}