diff options
| author | mat <github@matdoes.dev> | 2022-06-25 14:25:56 -0500 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2022-06-25 14:25:56 -0500 |
| commit | c46eb556e2e7964f0709572a0151c181752c3182 (patch) | |
| tree | da65427d74aaa66e002385989faee04c7bac6cbd /azalea-entity/src/lib.rs | |
| parent | 8755f18c2b0c11a51a81f60b5501d9d57d0c370e (diff) | |
| parent | 77980f0018eca3a192994021b76ad5d05bff88ea (diff) | |
| download | azalea-drasl-c46eb556e2e7964f0709572a0151c181752c3182.tar.xz | |
Merge branch 'main' into 1.19.1
Diffstat (limited to 'azalea-entity/src/lib.rs')
| -rw-r--r-- | azalea-entity/src/lib.rs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/azalea-entity/src/lib.rs b/azalea-entity/src/lib.rs new file mode 100644 index 00000000..9436d753 --- /dev/null +++ b/azalea-entity/src/lib.rs @@ -0,0 +1,59 @@ +mod data; + +use azalea_core::{EntityPos, PositionDelta}; +pub use data::*; +use uuid::Uuid; + +#[derive(Default, Debug)] +pub struct Entity { + /// The incrementing numerical id of the entity. + pub id: u32, + pub uuid: Uuid, + /// The position of the entity right now. + pos: EntityPos, + /// The position of the entity last tick. + pub old_pos: EntityPos, + pub delta: PositionDelta, + + pub x_rot: f32, + pub y_rot: f32, +} + +impl Entity { + pub fn new(id: u32, uuid: Uuid, pos: EntityPos) -> Self { + Self { + id, + uuid, + pos, + old_pos: pos, + delta: PositionDelta::default(), + x_rot: 0.0, + y_rot: 0.0, + } + } + + pub fn pos(&self) -> &EntityPos { + &self.pos + } + + /// Sets the position of the entity. This doesn't update the cache in + /// azalea-world, and should only be used within azalea-world! + pub fn unsafe_move(&mut self, new_pos: EntityPos) { + self.pos = new_pos; + } + + pub fn set_rotation(&mut self, y_rot: f32, x_rot: f32) { + self.y_rot = y_rot.clamp(-90.0, 90.0) % 360.0; + self.x_rot = x_rot % 360.0; + // TODO: minecraft also sets yRotO and xRotO to xRot and yRot ... but idk what they're used for so + } +} + +// #[cfg(test)] +// mod tests { +// #[test] +// fn it_works() { +// let result = 2 + 2; +// assert_eq!(result, 4); +// } +// } |
