From 370b6ac0093e224fcdea56aae920e0a55e0f4f39 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Wed, 17 Apr 2024 21:40:32 -0400 Subject: [PATCH] Remove the padding "fixes" for Dawntrail materials According to https://github.com/TexTools/xivModdingFramework/pull/60 the amount of color sets changed in Dawntrail. --- src/mtrl.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/mtrl.rs b/src/mtrl.rs index a148cc5..ba3439d 100644 --- a/src/mtrl.rs +++ b/src/mtrl.rs @@ -41,10 +41,11 @@ struct ColorSet { } #[binrw] +#[br(import {set_count: usize})] #[derive(Debug)] #[allow(dead_code)] struct ColorSetInfo { - #[br(count = 256)] + #[br(count = set_count)] data: Vec, } @@ -153,17 +154,17 @@ struct MaterialData { #[br(pad_after = file_header.additional_data_size)] strings: Vec, - #[br(if(file_header.data_set_size > 0 && file_header.version < 0x1030000))] + #[br(if(file_header.data_set_size > 0))] + // Dawntrail doubled the amount of color sets. + // The MTRL version is the same (why square enix?) so we check the data set size instead + #[br(args { set_count: if file_header.data_set_size < 2048 { 256 } else { 1024 } })] color_set_info: Option, - #[br(if(file_header.data_set_size > 512 && file_header.version < 0x1030000))] + #[br(if(file_header.data_set_size > + if file_header.data_set_size < 2048 { 512 } else { 2048 } + ))] 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)]