aboutsummaryrefslogtreecommitdiff
path: root/azalea-core/src/position.rs
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2023-05-04 20:38:10 +0000
committermat <github@matdoes.dev>2023-05-04 20:38:10 +0000
commitc7a923ccc8ae825deca62ac2cc8c80c01484d5b6 (patch)
tree787c6eb579d0b126f0e9dfa161bdea758fe9aa0a /azalea-core/src/position.rs
parentff6d43458cef8ac6a23e6e8accd4b71c2a04aef6 (diff)
parent634cb8d72c6608512aedba19e5cd669104bc35ea (diff)
downloadazalea-drasl-c7a923ccc8ae825deca62ac2cc8c80c01484d5b6.tar.xz
merge main
Diffstat (limited to 'azalea-core/src/position.rs')
-rwxr-xr-xazalea-core/src/position.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/azalea-core/src/position.rs b/azalea-core/src/position.rs
index c09c9966..766c38d6 100755
--- a/azalea-core/src/position.rs
+++ b/azalea-core/src/position.rs
@@ -18,6 +18,12 @@ macro_rules! vec3_impl {
self.x * self.x + self.y * self.y + self.z * self.z
}
+ /// Get the squared distance from this position to another position.
+ /// Equivalent to `(self - other).length_sqr()`.
+ pub fn distance_to_sqr(&self, other: &Self) -> $type {
+ (self - other).length_sqr()
+ }
+
/// Return a new instance of this position with the y coordinate
/// decreased by the given number.
pub fn down(&self, y: $type) -> Self {
@@ -36,6 +42,10 @@ macro_rules! vec3_impl {
z: self.z,
}
}
+
+ pub fn dot(&self, other: Self) -> $type {
+ self.x * other.x + self.y * other.y + self.z * other.z
+ }
}
impl Add for &$name {
@@ -142,6 +152,15 @@ impl BlockPos {
}
}
+ /// Convert the block position into a Vec3 without centering it.
+ pub fn to_vec3_floored(&self) -> Vec3 {
+ Vec3 {
+ x: self.x as f64,
+ y: self.y as f64,
+ z: self.z as f64,
+ }
+ }
+
/// Get the distance of this vector from the origin by doing `x + y + z`.
pub fn length_manhattan(&self) -> u32 {
(self.x.abs() + self.y.abs() + self.z.abs()) as u32