aboutsummaryrefslogtreecommitdiff
path: root/src/classes/mesh.rs
diff options
context:
space:
mode:
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,