aboutsummaryrefslogtreecommitdiff
path: root/src/classes/mesh.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-03-23 14:47:16 +0100
committermetamuffin <metamuffin@disroot.org>2025-03-23 14:47:16 +0100
commit6dc7f94764bdbb502884bde0641f59f70d0f92b3 (patch)
tree17e5c0ee2c64ca7746635ed0e6b0c194a07578ba /src/classes/mesh.rs
parent61dcbf35e9afb074f63dbfd78f768c871b4de87b (diff)
downloadunity-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.rs10
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,