diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-06 15:34:40 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-06 15:34:40 +0100 |
commit | 14d348febd549b944d03030bf748f7817a2bedac (patch) | |
tree | 96fb79928296a9b6e6b50e0c805fcafaaf32e16a /shared/src/resources.rs | |
parent | 48a0fb31737362c9bae0ff8f6fcf1e4e10600f94 (diff) | |
download | weareserver-14d348febd549b944d03030bf748f7817a2bedac.tar weareserver-14d348febd549b944d03030bf748f7817a2bedac.tar.bz2 weareserver-14d348febd549b944d03030bf748f7817a2bedac.tar.zst |
a
Diffstat (limited to 'shared/src/resources.rs')
-rw-r--r-- | shared/src/resources.rs | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/shared/src/resources.rs b/shared/src/resources.rs index e59ea25..6741936 100644 --- a/shared/src/resources.rs +++ b/shared/src/resources.rs @@ -1,11 +1,11 @@ use crate::packets::{ReadWrite, Resource}; use anyhow::{Result, bail}; -use glam::Vec3; +use glam::{Affine3A, Vec3A}; use log::warn; use std::io::{Read, Write}; #[derive(Debug, Default, Clone)] -pub struct Prefab(pub Vec<(Vec3, Vec3, Resource)>); +pub struct Prefab(pub Vec<(Affine3A, Resource)>); #[derive(Debug, Default, Clone)] pub struct Part { @@ -33,9 +33,8 @@ pub struct IndexArray(pub Vec<[u16; 3]>); impl ReadWrite for Prefab { fn write(&self, w: &mut dyn Write) -> Result<()> { - for (pos, rot, res) in self.0.clone() { - pos.write(w)?; - rot.write(w)?; + for (aff, res) in self.0.clone() { + aff.write(w)?; res.write(w)?; } Ok(()) @@ -45,7 +44,7 @@ impl ReadWrite for Prefab { let mut g = Vec::new(); r.read_to_end(&mut g)?; while !g.is_empty() { - s.0.push((Vec3::read(r)?, Vec3::read(r)?, Resource::read(r)?)) + s.0.push((Affine3A::read(r)?, Resource::read(r)?)) } Ok(s) } @@ -186,7 +185,7 @@ impl ReadWrite for Attribute { } } -impl ReadWrite for Vec3 { +impl ReadWrite for Vec3A { fn write(&self, w: &mut dyn Write) -> Result<()> { w.write_all(&self.x.to_be_bytes())?; w.write_all(&self.y.to_be_bytes())?; @@ -197,3 +196,14 @@ impl ReadWrite for Vec3 { Ok(Self::new(f32::read(r)?, f32::read(r)?, f32::read(r)?)) } } +impl ReadWrite for Affine3A { + fn write(&self, w: &mut dyn Write) -> Result<()> { + for v in self.to_cols_array() { + v.write(w)? + } + Ok(()) + } + fn read(r: &mut dyn Read) -> Result<Self> { + Ok(Self::from_cols_array(&[(); 12].try_map(|()| f32::read(r))?)) + } +} |