aboutsummaryrefslogtreecommitdiff
path: root/azalea-core/src/delta.rs
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2022-06-23 15:12:17 -0500
committermat <github@matdoes.dev>2022-06-23 15:12:17 -0500
commit5ca49e680ed8519456dc9a9af84321d4b69dcbb3 (patch)
tree0f727c3e862f60eb227db69c87946a0f629a397d /azalea-core/src/delta.rs
parentc7b0c51274b5d8548c8a2f829b75dfbec4038be2 (diff)
downloadazalea-drasl-5ca49e680ed8519456dc9a9af84321d4b69dcbb3.tar.xz
azalea-buf
Diffstat (limited to 'azalea-core/src/delta.rs')
-rw-r--r--azalea-core/src/delta.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/azalea-core/src/delta.rs b/azalea-core/src/delta.rs
new file mode 100644
index 00000000..32517e0d
--- /dev/null
+++ b/azalea-core/src/delta.rs
@@ -0,0 +1,26 @@
+/// Only works for up to 8 blocks
+#[derive(Clone, Debug, McBuf)]
+pub struct PositionDelta {
+ xa: i16,
+ ya: i16,
+ za: i16,
+}
+
+impl PositionDelta {
+ pub fn float(&self) -> (f64, f64, f64) {
+ (
+ (self.xa as f64) / 4096.0,
+ (self.ya as f64) / 4096.0,
+ (self.za as f64) / 4096.0,
+ )
+ }
+}
+
+impl EntityPos {
+ pub fn apply_delta(&mut self, delta: &PositionDelta) {
+ let (x, y, z) = delta.float();
+ self.x += x;
+ self.y += y;
+ self.z += z;
+ }
+}