diff --git a/azalea-core/src/position.rs b/azalea-core/src/position.rs index ab73c0d1a..819d72cf1 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 cd3ee1199..c36ea790a 100644 --- a/azalea/src/pathfinder/astar.rs +++ b/azalea/src/pathfinder/astar.rs @@ -277,28 +277,25 @@ impl Clone for Movement { #[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 { Some(self.cmp(other)) }