diff options
| author | mat <git@matdoes.dev> | 2025-10-07 11:06:30 +0700 |
|---|---|---|
| committer | mat <git@matdoes.dev> | 2025-10-07 11:06:30 +0700 |
| commit | 17416abd1bd1dfffafb8bb9c0407b6373631e483 (patch) | |
| tree | b474c4c682967a15bbc9cedf2c6cc7c87f4714ae /azalea/src/pathfinder/moves/basic.rs | |
| parent | 6585e552d47387746f45ac4bb0f0a32d6219aa91 (diff) | |
| download | azalea-drasl-17416abd1bd1dfffafb8bb9c0407b6373631e483.tar.xz | |
several pathfinder fixes
Diffstat (limited to 'azalea/src/pathfinder/moves/basic.rs')
| -rw-r--r-- | azalea/src/pathfinder/moves/basic.rs | 18 |
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; } |
