1
Fork 0
mirror of https://github.com/redstrate/Physis.git synced 2025-04-21 04:07:46 +00:00

Remove more magic constant numbers with std::mem::size_of

This commit is contained in:
Joshua Goins 2023-12-12 22:04:30 -05:00
parent 5cce23bd3c
commit 60f4d49a0c

View file

@ -2,6 +2,7 @@
// SPDX-License-Identifier: GPL-3.0-or-later // SPDX-License-Identifier: GPL-3.0-or-later
use std::io::{Cursor, Seek, SeekFrom, Write}; use std::io::{Cursor, Seek, SeekFrom, Write};
use std::mem::size_of;
use binrw::{BinResult, binrw, BinWrite, BinWriterExt}; use binrw::{BinResult, binrw, BinWrite, BinWriterExt};
use binrw::BinRead; use binrw::BinRead;
@ -560,7 +561,7 @@ impl MDL {
cursor cursor
.seek(SeekFrom::Start( .seek(SeekFrom::Start(
(model_file_header.index_offsets[i as usize] (model_file_header.index_offsets[i as usize]
+ (model.meshes[j as usize].start_index * 2)) + (model.meshes[j as usize].start_index * size_of::<u16>() as u32))
as u64, as u64,
)) ))
.ok()?; .ok()?;
@ -651,7 +652,7 @@ impl MDL {
} }
total_vertex_buffer_size += vertex_count as u32 * total_vertex_stride; total_vertex_buffer_size += vertex_count as u32 * total_vertex_stride;
total_index_buffer_size += index_count * 2; // sizeof uint16, TODO: don't hardcode total_index_buffer_size += index_count * size_of::<u16>() as u32;
} }
// Unknown padding? // Unknown padding?
@ -677,12 +678,12 @@ impl MDL {
+ ( 3 * 60 ) // 3 Lods + ( 3 * 60 ) // 3 Lods
//+ ( /*file.ModelHeader.ExtraLodEnabled ? 40*/ 0 ) //+ ( /*file.ModelHeader.ExtraLodEnabled ? 40*/ 0 )
+ self.model_data.meshes.len() as u32 * 36 + self.model_data.meshes.len() as u32 * 36
+ self.model_data.attribute_name_offsets.len() as u32 * 4 + self.model_data.attribute_name_offsets.len() as u32 * size_of::<u32>() as u32
+ self.model_data.header.terrain_shadow_mesh_count as u32 * 20 + self.model_data.header.terrain_shadow_mesh_count as u32 * 20
+ self.model_data.header.submesh_count as u32 * 16 + self.model_data.header.submesh_count as u32 * 16
+ self.model_data.header.terrain_shadow_submesh_count as u32 * 10 + self.model_data.header.terrain_shadow_submesh_count as u32 * 10
+ self.model_data.material_name_offsets.len() as u32 * 4 + self.model_data.material_name_offsets.len() as u32 * size_of::<u32>() as u32
+ self.model_data.bone_name_offsets.len() as u32 * 4 + self.model_data.bone_name_offsets.len() as u32 * size_of::<u32>() as u32
+ self.model_data.bone_tables.len() as u32 * 132 + self.model_data.bone_tables.len() as u32 * 132
+ self.model_data.header.shape_count as u32 * 16 + self.model_data.header.shape_count as u32 * 16
+ self.model_data.header.shape_mesh_count as u32 * 12 + self.model_data.header.shape_mesh_count as u32 * 12
@ -694,7 +695,7 @@ impl MDL {
+ ( self.model_data.header.bone_count as u32 * 32 ); + ( self.model_data.header.bone_count as u32 * 32 );
let mut vertex_offset = self.file_header.runtime_size let mut vertex_offset = self.file_header.runtime_size
+ 68 // model file header + size_of::<ModelFileHeader>() as u32
+ self.file_header.stack_size; + self.file_header.stack_size;
for lod in &mut self.model_data.lods { for lod in &mut self.model_data.lods {
@ -871,7 +872,7 @@ impl MDL {
cursor cursor
.seek(SeekFrom::Start( .seek(SeekFrom::Start(
(self.file_header.index_offsets[l] (self.file_header.index_offsets[l]
+ (self.model_data.meshes[part.mesh_index as usize].start_index * 2)) + (self.model_data.meshes[part.mesh_index as usize].start_index * size_of::<u16>() as u32))
as u64, as u64,
)) ))
.ok()?; .ok()?;