diff --git a/Penumbra/UI/AdvancedWindow/Materials/MtrlTab.ShaderPackage.cs b/Penumbra/UI/AdvancedWindow/Materials/MtrlTab.ShaderPackage.cs index 4985ccf5..ed38026d 100644 --- a/Penumbra/UI/AdvancedWindow/Materials/MtrlTab.ShaderPackage.cs +++ b/Penumbra/UI/AdvancedWindow/Materials/MtrlTab.ShaderPackage.cs @@ -325,6 +325,7 @@ public partial class MtrlTab { ret |= DrawPackageNameInput(disabled); ret |= DrawShaderFlagsInput(disabled); + ret |= DrawAdditionalFlagsInput(disabled); DrawCustomAssociations(); ret |= DrawMaterialShaderKeys(disabled); DrawMaterialShaders(); @@ -378,8 +379,8 @@ public partial class MtrlTab { var shpkFlags = (int)Mtrl.ShaderPackage.Flags; Im.Item.SetNextWidthScaled(250.0f); - if (!Im.Input.Scalar("Shader Flags"u8, ref shpkFlags, 0, 0, - InputTextFlags.CharsHexadecimal | (disabled ? InputTextFlags.ReadOnly : InputTextFlags.None))) + if (!Im.Input.Scalar("Shader Flags"u8, ref shpkFlags, "%08X"u8, + flags: InputTextFlags.CharsHexadecimal | (disabled ? InputTextFlags.ReadOnly : InputTextFlags.None))) return false; Mtrl.ShaderPackage.Flags = (uint)shpkFlags; @@ -387,6 +388,24 @@ public partial class MtrlTab return true; } + private bool DrawAdditionalFlagsInput(bool disabled) + { + const uint lockedFlags = 0x00000FFC; + + if (Mtrl.AdditionalData.Length < 4) + return false; + + var originalFlags = Mtrl.TableFlags.Flags; + var additionalFlags = originalFlags; + Im.Item.SetNextWidthScaled(250.0f); + if (!Im.Input.Scalar("Additional Flags"u8, ref additionalFlags, "%08X"u8, + flags: InputTextFlags.CharsHexadecimal | (disabled ? InputTextFlags.ReadOnly : InputTextFlags.None))) + return false; + + Mtrl.TableFlags = new((additionalFlags & ~lockedFlags) | (originalFlags & lockedFlags)); + return true; + } + /// /// Show the currently associated shpk file, if any, and the buttons to associate /// a specific shpk from your drive, the modded shpk by path or the default shpk.