aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xazalea-core/src/position.rs2
-rw-r--r--azalea/src/pathfinder/astar.rs15
2 files changed, 7 insertions, 10 deletions
diff --git a/azalea-core/src/position.rs b/azalea-core/src/position.rs
index ab73c0d1..819d72cf 100755
--- a/azalea-core/src/position.rs
+++ b/azalea-core/src/position.rs
@@ -271,7 +271,7 @@ impl Vec3 {
}
/// The coordinates of a block in the world. For entities (if the coordinate
-/// with decimals), use [`Vec3`] instead.
+/// have decimals), use [`Vec3`] instead.
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub struct BlockPos {
diff --git a/azalea/src/pathfinder/astar.rs b/azalea/src/pathfinder/astar.rs
index cd3ee119..c36ea790 100644
--- a/azalea/src/pathfinder/astar.rs
+++ b/azalea/src/pathfinder/astar.rs
@@ -277,28 +277,25 @@ impl<P: Hash + Copy + Clone, M: Clone> Clone for Movement<P, M> {
#[derive(PartialEq)]
pub struct WeightedNode {
index: usize,
+ /// The actual cost to get to this node
g_score: f32,
+ /// Sum of the g_score and heuristic
f_score: f32,
}
impl Ord for WeightedNode {
+ #[inline]
fn cmp(&self, other: &Self) -> cmp::Ordering {
// intentionally inverted to make the BinaryHeap a min-heap
- match other
- .f_score
- .partial_cmp(&self.f_score)
- .unwrap_or(cmp::Ordering::Equal)
- {
- cmp::Ordering::Equal => self
- .g_score
- .partial_cmp(&other.g_score)
- .unwrap_or(cmp::Ordering::Equal),
+ match other.f_score.total_cmp(&self.f_score) {
+ cmp::Ordering::Equal => self.g_score.total_cmp(&other.g_score),
s => s,
}
}
}
impl Eq for WeightedNode {}
impl PartialOrd for WeightedNode {
+ #[inline]
fn partial_cmp(&self, other: &Self) -> Option<cmp::Ordering> {
Some(self.cmp(other))
}