Skip to content

Commit 0521e00

Browse files
Support OnlyAttributes flag on import
1 parent fdaa98b commit 0521e00

File tree

1 file changed

+24
-1
lines changed
  • xivModdingFramework/Mods/FileTypes

1 file changed

+24
-1
lines changed

xivModdingFramework/Mods/FileTypes/PMP.cs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,26 @@ private static void ValidateOption(PmpStandardOptionJson op)
419419
{
420420
var root = imcGroup.GetRoot();
421421
var metaData = await GetImportMetadata(imported, root, tx);
422+
423+
// If the OnlyAttribute flag is set on the group, fill in the fields that should be ignored from the current values instead
424+
// ( The source can be null, in the case that we're going to be synthesizing new variants from thin air )
425+
void CopyNonMaskImcValues(XivImc xivImc, XivImc src)
426+
{
427+
xivImc.Animation = src?.Animation ?? 0;
428+
xivImc.SoundId = src?.SoundId ?? 0;
429+
xivImc.MaterialSet = src?.MaterialSet ?? 0;
430+
xivImc.Decal = src?.Decal ?? 0;
431+
xivImc.Vfx = src?.Vfx ?? 0;
432+
};
433+
434+
if (imcGroup.OnlyAttributes)
435+
{
436+
XivImc copyFromEntry = null;
437+
if (imcGroup.Identifier.Variant < metaData.ImcEntries.Count)
438+
copyFromEntry = metaData.ImcEntries[(int)imcGroup.Identifier.Variant];
439+
CopyNonMaskImcValues(xivImc, copyFromEntry);
440+
}
441+
422442
if (metaData.ImcEntries.Count <= imcGroup.Identifier.Variant)
423443
{
424444
while(metaData.ImcEntries.Count <= imcGroup.Identifier.Variant)
@@ -435,7 +455,10 @@ private static void ValidateOption(PmpStandardOptionJson op)
435455
{
436456
for (int i = 0; i < metaData.ImcEntries.Count; i++)
437457
{
438-
metaData.ImcEntries[i] = (XivImc)xivImc.Clone();
458+
var variantXivImc = (XivImc)xivImc.Clone();
459+
if (imcGroup.OnlyAttributes)
460+
CopyNonMaskImcValues(variantXivImc, metaData.ImcEntries[i]);
461+
metaData.ImcEntries[i] = variantXivImc;
439462
}
440463
}
441464

0 commit comments

Comments
 (0)