Make LipDiffuse a Vec4 instead of two values.

This commit is contained in:
Ottermandias 2024-01-10 16:41:45 +01:00
parent 630647b544
commit 8a9fa98706
2 changed files with 19 additions and 35 deletions

View file

@ -4,20 +4,19 @@ namespace Glamourer.GameData;
public struct CustomizeParameterData
{
public Vector4 DecalColor;
public Vector4 LipDiffuse;
public Vector3 SkinDiffuse;
public Vector3 SkinSpecular;
public Vector3 LipDiffuse;
public Vector3 HairDiffuse;
public Vector3 HairSpecular;
public Vector3 HairHighlight;
public Vector3 LeftEye;
public Vector3 RightEye;
public Vector3 FeatureColor;
public Vector4 DecalColor;
public float FacePaintUvMultiplier;
public float FacePaintUvOffset;
public float MuscleTone;
public float LipOpacity;
public CustomizeParameterValue this[CustomizeParameterFlag flag]
{
@ -30,7 +29,6 @@ public struct CustomizeParameterData
CustomizeParameterFlag.MuscleTone => new CustomizeParameterValue(MuscleTone),
CustomizeParameterFlag.SkinSpecular => new CustomizeParameterValue(SkinSpecular),
CustomizeParameterFlag.LipDiffuse => new CustomizeParameterValue(LipDiffuse),
CustomizeParameterFlag.LipOpacity => new CustomizeParameterValue(LipOpacity),
CustomizeParameterFlag.HairDiffuse => new CustomizeParameterValue(HairDiffuse),
CustomizeParameterFlag.HairSpecular => new CustomizeParameterValue(HairSpecular),
CustomizeParameterFlag.HairHighlight => new CustomizeParameterValue(HairHighlight),
@ -54,8 +52,7 @@ public struct CustomizeParameterData
CustomizeParameterFlag.SkinDiffuse => SetIfDifferent(ref SkinDiffuse, value.InternalTriple),
CustomizeParameterFlag.MuscleTone => SetIfDifferent(ref MuscleTone, value.Single),
CustomizeParameterFlag.SkinSpecular => SetIfDifferent(ref SkinSpecular, value.InternalTriple),
CustomizeParameterFlag.LipDiffuse => SetIfDifferent(ref LipDiffuse, value.InternalTriple),
CustomizeParameterFlag.LipOpacity => SetIfDifferent(ref LipOpacity, value.Single),
CustomizeParameterFlag.LipDiffuse => SetIfDifferent(ref LipDiffuse, value.InternalQuadruple),
CustomizeParameterFlag.HairDiffuse => SetIfDifferent(ref HairDiffuse, value.InternalTriple),
CustomizeParameterFlag.HairSpecular => SetIfDifferent(ref HairSpecular, value.InternalTriple),
CustomizeParameterFlag.HairHighlight => SetIfDifferent(ref HairHighlight, value.InternalTriple),
@ -80,14 +77,6 @@ public struct CustomizeParameterData
_ => new CustomizeParameterValue(SkinDiffuse, MuscleTone).XivQuadruple,
};
parameters.LipColor = (flags & (CustomizeParameterFlag.LipDiffuse | CustomizeParameterFlag.LipOpacity)) switch
{
0 => parameters.LipColor,
CustomizeParameterFlag.LipDiffuse => new CustomizeParameterValue(LipDiffuse, parameters.LipColor.W).XivQuadruple,
CustomizeParameterFlag.LipOpacity => parameters.LipColor with { W = LipOpacity },
_ => new CustomizeParameterValue(LipDiffuse, LipOpacity).XivQuadruple,
};
parameters.LeftColor = (flags & (CustomizeParameterFlag.LeftEye | CustomizeParameterFlag.FacePaintUvMultiplier)) switch
{
0 => parameters.LeftColor,
@ -112,6 +101,8 @@ public struct CustomizeParameterData
parameters.HairFresnelValue0 = new CustomizeParameterValue(HairSpecular).XivTriple;
if (flags.HasFlag(CustomizeParameterFlag.HairHighlight))
parameters.MeshColor = new CustomizeParameterValue(HairHighlight).XivTriple;
if (flags.HasFlag(CustomizeParameterFlag.LipDiffuse))
parameters.LipColor = new CustomizeParameterValue(LipDiffuse).XivQuadruple;
if (flags.HasFlag(CustomizeParameterFlag.FeatureColor))
parameters.OptionColor = new CustomizeParameterValue(FeatureColor).XivTriple;
}
@ -138,10 +129,7 @@ public struct CustomizeParameterData
parameters.SkinFresnelValue0 = new CustomizeParameterValue(SkinSpecular).XivQuadruple;
break;
case CustomizeParameterFlag.LipDiffuse:
parameters.LipColor = new CustomizeParameterValue(LipDiffuse, parameters.LipColor.W).XivQuadruple;
break;
case CustomizeParameterFlag.LipOpacity:
parameters.LipColor.W = LipOpacity;
parameters.LipColor = new CustomizeParameterValue(LipDiffuse).XivQuadruple;
break;
case CustomizeParameterFlag.HairDiffuse:
parameters.MainColor = new CustomizeParameterValue(HairDiffuse).XivTriple;
@ -176,10 +164,9 @@ public struct CustomizeParameterData
FacePaintUvOffset = parameter.RightColor.W,
FacePaintUvMultiplier = parameter.LeftColor.W,
MuscleTone = parameter.SkinColor.W,
LipOpacity = parameter.LipColor.W,
SkinDiffuse = new CustomizeParameterValue(parameter.SkinColor).InternalTriple,
SkinSpecular = new CustomizeParameterValue(parameter.SkinFresnelValue0).InternalTriple,
LipDiffuse = new CustomizeParameterValue(parameter.LipColor).InternalTriple,
LipDiffuse = new CustomizeParameterValue(parameter.LipColor).InternalQuadruple,
HairDiffuse = new CustomizeParameterValue(parameter.MainColor).InternalTriple,
HairSpecular = new CustomizeParameterValue(parameter.HairFresnelValue0).InternalTriple,
HairHighlight = new CustomizeParameterValue(parameter.MeshColor).InternalTriple,
@ -196,7 +183,6 @@ public struct CustomizeParameterData
CustomizeParameterFlag.MuscleTone => new CustomizeParameterValue(parameter.SkinColor.W),
CustomizeParameterFlag.SkinSpecular => new CustomizeParameterValue(parameter.SkinFresnelValue0),
CustomizeParameterFlag.LipDiffuse => new CustomizeParameterValue(parameter.LipColor),
CustomizeParameterFlag.LipOpacity => new CustomizeParameterValue(parameter.LipColor.W),
CustomizeParameterFlag.HairDiffuse => new CustomizeParameterValue(parameter.MainColor),
CustomizeParameterFlag.HairSpecular => new CustomizeParameterValue(parameter.HairFresnelValue0),
CustomizeParameterFlag.HairHighlight => new CustomizeParameterValue(parameter.MeshColor),

View file

@ -7,27 +7,26 @@ public enum CustomizeParameterFlag : ushort
MuscleTone = 0x0002,
SkinSpecular = 0x0004,
LipDiffuse = 0x0008,
LipOpacity = 0x0010,
HairDiffuse = 0x0020,
HairSpecular = 0x0040,
HairHighlight = 0x0080,
LeftEye = 0x0100,
RightEye = 0x0200,
FeatureColor = 0x0400,
FacePaintUvMultiplier = 0x0800,
FacePaintUvOffset = 0x1000,
DecalColor = 0x2000,
HairDiffuse = 0x0010,
HairSpecular = 0x0020,
HairHighlight = 0x0040,
LeftEye = 0x0080,
RightEye = 0x0100,
FeatureColor = 0x0200,
FacePaintUvMultiplier = 0x0400,
FacePaintUvOffset = 0x0800,
DecalColor = 0x1000,
}
public static class CustomizeParameterExtensions
{
public const CustomizeParameterFlag All = (CustomizeParameterFlag)0x3FFF;
public const CustomizeParameterFlag All = (CustomizeParameterFlag)0x1FFF;
public const CustomizeParameterFlag RgbTriples = All
& ~(RgbaQuadruples | Percentages | Values);
public const CustomizeParameterFlag RgbaQuadruples = CustomizeParameterFlag.DecalColor;
public const CustomizeParameterFlag Percentages = CustomizeParameterFlag.MuscleTone | CustomizeParameterFlag.LipOpacity;
public const CustomizeParameterFlag RgbaQuadruples = CustomizeParameterFlag.DecalColor | CustomizeParameterFlag.LipDiffuse;
public const CustomizeParameterFlag Percentages = CustomizeParameterFlag.MuscleTone;
public const CustomizeParameterFlag Values = CustomizeParameterFlag.FacePaintUvOffset | CustomizeParameterFlag.FacePaintUvMultiplier;
public static readonly IReadOnlyList<CustomizeParameterFlag> AllFlags = [.. Enum.GetValues<CustomizeParameterFlag>()];
@ -52,7 +51,6 @@ public static class CustomizeParameterExtensions
CustomizeParameterFlag.MuscleTone => "Muscle Tone",
CustomizeParameterFlag.SkinSpecular => "Skin Shine",
CustomizeParameterFlag.LipDiffuse => "Lip Color",
CustomizeParameterFlag.LipOpacity => "Lip Opacity",
CustomizeParameterFlag.HairDiffuse => "Hair Color",
CustomizeParameterFlag.HairSpecular => "Hair Shine",
CustomizeParameterFlag.HairHighlight => "Hair Highlights",