diff options
Diffstat (limited to 'src/classes')
-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, |