diff --git a/src/mtrl.rs b/src/mtrl.rs index aa9f2b3..a148cc5 100644 --- a/src/mtrl.rs +++ b/src/mtrl.rs @@ -117,7 +117,10 @@ enum TextureUsage #[brw(magic = 0x20491240u32)] SamplerWaveletMap1, #[brw(magic = 0x95E1F64Du32)] - SamplerWhitecapMap + SamplerWhitecapMap, + + #[brw(magic = 0x565f8fd8u32)] + UnknownDawntrail1 } #[binrw] @@ -150,12 +153,17 @@ struct MaterialData { #[br(pad_after = file_header.additional_data_size)] strings: Vec, - #[br(if(file_header.data_set_size > 0))] + #[br(if(file_header.data_set_size > 0 && file_header.version < 0x1030000))] color_set_info: Option, - #[br(if(file_header.data_set_size > 512))] + #[br(if(file_header.data_set_size > 512 && file_header.version < 0x1030000))] color_set_due_info: Option, + // Dawntrail unknown stuff + #[br(if(file_header.version == 0x1030000))] + #[br(count = file_header.data_set_size)] + unknown1: Vec, + header: MaterialHeader, #[br(count = header.shader_key_count)] @@ -179,9 +187,7 @@ impl Material { pub fn from_existing(buffer: ByteSpan) -> Option { let mut cursor = Cursor::new(buffer); let mat_data = MaterialData::read(&mut cursor).ok()?; - - println!("{:#?}", mat_data); - + let mut texture_paths = vec![]; let mut offset = 0;