diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-06 14:58:42 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-06 14:58:42 +0100 |
commit | 48a0fb31737362c9bae0ff8f6fcf1e4e10600f94 (patch) | |
tree | b7b6940d476ce78081d99b1e9c028c86115bd8ed /shared | |
parent | 814cc1cb01692aa934a40636c9226ff7bb911266 (diff) | |
download | weareserver-48a0fb31737362c9bae0ff8f6fcf1e4e10600f94.tar weareserver-48a0fb31737362c9bae0ff8f6fcf1e4e10600f94.tar.bz2 weareserver-48a0fb31737362c9bae0ff8f6fcf1e4e10600f94.tar.zst |
prefab offsets
Diffstat (limited to 'shared')
-rw-r--r-- | shared/src/resources.rs | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/shared/src/resources.rs b/shared/src/resources.rs index cdf53bd..e59ea25 100644 --- a/shared/src/resources.rs +++ b/shared/src/resources.rs @@ -1,10 +1,11 @@ use crate::packets::{ReadWrite, Resource}; use anyhow::{Result, bail}; +use glam::Vec3; use log::warn; use std::io::{Read, Write}; #[derive(Debug, Default, Clone)] -pub struct Prefab(pub Vec<Resource>); +pub struct Prefab(pub Vec<(Vec3, Vec3, Resource)>); #[derive(Debug, Default, Clone)] pub struct Part { @@ -32,8 +33,10 @@ pub struct IndexArray(pub Vec<[u16; 3]>); impl ReadWrite for Prefab { fn write(&self, w: &mut dyn Write) -> Result<()> { - for x in self.0.clone() { - w.write_all(&x.0)?; + for (pos, rot, res) in self.0.clone() { + pos.write(w)?; + rot.write(w)?; + res.write(w)?; } Ok(()) } @@ -41,8 +44,8 @@ impl ReadWrite for Prefab { let mut s = Prefab::default(); let mut g = Vec::new(); r.read_to_end(&mut g)?; - for x in g.iter().array_chunks::<32>() { - s.0.push(Resource(x.map(|x| *x))) + while !g.is_empty() { + s.0.push((Vec3::read(r)?, Vec3::read(r)?, Resource::read(r)?)) } Ok(s) } @@ -182,3 +185,15 @@ impl ReadWrite for Attribute { }) } } + +impl ReadWrite for Vec3 { + fn write(&self, w: &mut dyn Write) -> Result<()> { + w.write_all(&self.x.to_be_bytes())?; + w.write_all(&self.y.to_be_bytes())?; + w.write_all(&self.z.to_be_bytes())?; + Ok(()) + } + fn read(r: &mut dyn Read) -> Result<Self> { + Ok(Self::new(f32::read(r)?, f32::read(r)?, f32::read(r)?)) + } +} |