1
Fork 0
mirror of https://github.com/redstrate/Physis.git synced 2025-04-24 13:37:44 +00:00

Make the data offset calculations a little bit clearer

This commit is contained in:
Joshua Goins 2024-03-01 15:47:47 -05:00
parent ebca076c2d
commit d75296f4d2

View file

@ -376,6 +376,7 @@ pub struct SubMesh {
pub index_offset: u32
}
/// Corresponds to a "Mesh" in an LOD
#[derive(Clone)]
pub struct Part {
mesh_index: u16,
@ -695,21 +696,26 @@ impl MDL {
self.file_header.stack_size = self.file_header.calculate_stack_size();
self.file_header.runtime_size = self.model_data.calculate_runtime_size();
let mut vertex_offset = self.file_header.runtime_size
let data_offset = self.file_header.runtime_size
+ size_of::<ModelFileHeader>() as u32
+ self.file_header.stack_size;
let mut overall_offset: u32 = 0;
for lod in &mut self.model_data.lods {
lod.vertex_data_offset = vertex_offset;
// vertex
lod.vertex_data_offset = data_offset + overall_offset;
overall_offset += lod.vertex_buffer_size;
vertex_offset = lod.vertex_data_offset + lod.vertex_buffer_size;
// index
lod.index_data_offset = data_offset + overall_offset;
overall_offset += lod.index_buffer_size;
lod.index_data_offset = vertex_offset;
// edge, but unused?
//lod.edge_geometry_data_offset = data_offset + overall_offset;
//overall_offset += lod.edge_geometry_size;
// dummy
lod.edge_geometry_data_offset = vertex_offset;
vertex_offset = lod.index_data_offset + lod.index_buffer_size;
lod.edge_geometry_data_offset = lod.index_data_offset;
}
for i in 0..self.lods.len() {