diff options
author | metamuffin <metamuffin@disroot.org> | 2025-03-23 14:47:16 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-03-23 14:47:16 +0100 |
commit | 6dc7f94764bdbb502884bde0641f59f70d0f92b3 (patch) | |
tree | 17e5c0ee2c64ca7746635ed0e6b0c194a07578ba /src/classes/mesh.rs | |
parent | 61dcbf35e9afb074f63dbfd78f768c871b4de87b (diff) | |
download | unity-tools-6dc7f94764bdbb502884bde0641f59f70d0f92b3.tar unity-tools-6dc7f94764bdbb502884bde0641f59f70d0f92b3.tar.bz2 unity-tools-6dc7f94764bdbb502884bde0641f59f70d0f92b3.tar.zst |
seperate type parsing
Diffstat (limited to 'src/classes/mesh.rs')
-rw-r--r-- | src/classes/mesh.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/classes/mesh.rs b/src/classes/mesh.rs index 5a9c229..96e42c2 100644 --- a/src/classes/mesh.rs +++ b/src/classes/mesh.rs @@ -152,13 +152,17 @@ impl VertexData { if channel.dimension == 0 { return None; } + let dim = channel.dimension as usize % 48; let component_offset = channel.offset as usize; let component_size = channel.format.component_size(); let (offset, stride) = self.stream_layout()[channel.stream as usize]; - debug!("reading {ch:?} vertex channel (stride={stride}, offset={offset})"); + debug!( + "reading {ch:?} vertex channel (stride={stride}, offset={offset}, format={:?})", + channel.format + ); let mut out = Vec::new(); for vi in 0..self.vertex_count as usize { - for di in 0..channel.dimension as usize { + for di in 0..dim { let off = offset + vi * stride + component_offset + component_size * di; let e = &self.data[off..]; out.push(match channel.format { @@ -177,7 +181,7 @@ impl VertexData { }) } } - Some((channel.dimension as usize, out)) + Some((dim, out)) } pub fn read_channel_vec<T: VectorType>( &self, |