mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2025-12-12 18:27:24 +01:00
Fix advanced customize.
This commit is contained in:
parent
b3818a90df
commit
124656c22e
2 changed files with 21 additions and 7 deletions
|
|
@ -73,7 +73,7 @@ public struct CustomizeParameterData
|
||||||
}
|
}
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
||||||
public readonly unsafe void Apply(ref CustomizeParameter parameters, CustomizeParameterFlag flags = CustomizeParameterExtensions.All)
|
public readonly void Apply(ref CustomizeParameter parameters, CustomizeParameterFlag flags = CustomizeParameterExtensions.All)
|
||||||
{
|
{
|
||||||
parameters.SkinColor = (flags & (CustomizeParameterFlag.SkinDiffuse | CustomizeParameterFlag.MuscleTone)) switch
|
parameters.SkinColor = (flags & (CustomizeParameterFlag.SkinDiffuse | CustomizeParameterFlag.MuscleTone)) switch
|
||||||
{
|
{
|
||||||
|
|
@ -102,11 +102,25 @@ public struct CustomizeParameterData
|
||||||
if (flags.HasFlag(CustomizeParameterFlag.SkinSpecular))
|
if (flags.HasFlag(CustomizeParameterFlag.SkinSpecular))
|
||||||
parameters.SkinFresnelValue0 = new CustomizeParameterValue(SkinSpecular).XivQuadruple;
|
parameters.SkinFresnelValue0 = new CustomizeParameterValue(SkinSpecular).XivQuadruple;
|
||||||
if (flags.HasFlag(CustomizeParameterFlag.HairDiffuse))
|
if (flags.HasFlag(CustomizeParameterFlag.HairDiffuse))
|
||||||
parameters.MainColor = new CustomizeParameterValue(HairDiffuse).XivTriple;
|
{
|
||||||
|
// Vector3 is 0x10 byte for some reason.
|
||||||
|
var triple = new CustomizeParameterValue(HairDiffuse).XivTriple;
|
||||||
|
parameters.MainColor.X = triple.X;
|
||||||
|
parameters.MainColor.Y = triple.Y;
|
||||||
|
parameters.MainColor.Z = triple.Z;
|
||||||
|
}
|
||||||
|
|
||||||
if (flags.HasFlag(CustomizeParameterFlag.HairSpecular))
|
if (flags.HasFlag(CustomizeParameterFlag.HairSpecular))
|
||||||
parameters.HairFresnelValue0 = new CustomizeParameterValue(HairSpecular).XivTriple;
|
parameters.HairFresnelValue0 = new CustomizeParameterValue(HairSpecular).XivTriple;
|
||||||
if (flags.HasFlag(CustomizeParameterFlag.HairHighlight))
|
if (flags.HasFlag(CustomizeParameterFlag.HairHighlight))
|
||||||
parameters.MeshColor = new CustomizeParameterValue(HairHighlight).XivTriple;
|
{
|
||||||
|
// Vector3 is 0x10 byte for some reason.
|
||||||
|
var triple = new CustomizeParameterValue(HairHighlight).XivTriple;
|
||||||
|
parameters.MeshColor.X = triple.X;
|
||||||
|
parameters.MeshColor.Y = triple.Y;
|
||||||
|
parameters.MeshColor.Z = triple.Z;
|
||||||
|
}
|
||||||
|
|
||||||
if (flags.HasFlag(CustomizeParameterFlag.FacePaintUvMultiplier))
|
if (flags.HasFlag(CustomizeParameterFlag.FacePaintUvMultiplier))
|
||||||
GetUvMultiplierWrite(ref parameters) = FacePaintUvMultiplier;
|
GetUvMultiplierWrite(ref parameters) = FacePaintUvMultiplier;
|
||||||
if (flags.HasFlag(CustomizeParameterFlag.FacePaintUvOffset))
|
if (flags.HasFlag(CustomizeParameterFlag.FacePaintUvOffset))
|
||||||
|
|
@ -125,7 +139,7 @@ public struct CustomizeParameterData
|
||||||
}
|
}
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
||||||
public readonly unsafe void ApplySingle(ref CustomizeParameter parameters, CustomizeParameterFlag flag)
|
public readonly void ApplySingle(ref CustomizeParameter parameters, CustomizeParameterFlag flag)
|
||||||
{
|
{
|
||||||
switch (flag)
|
switch (flag)
|
||||||
{
|
{
|
||||||
|
|
@ -174,7 +188,7 @@ public struct CustomizeParameterData
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static unsafe CustomizeParameterData FromParameters(in CustomizeParameter parameter, in DecalParameters decal)
|
public static CustomizeParameterData FromParameters(in CustomizeParameter parameter, in DecalParameters decal)
|
||||||
=> new()
|
=> new()
|
||||||
{
|
{
|
||||||
FacePaintUvOffset = GetUvOffset(parameter),
|
FacePaintUvOffset = GetUvOffset(parameter),
|
||||||
|
|
@ -194,7 +208,7 @@ public struct CustomizeParameterData
|
||||||
DecalColor = FromParameter(decal),
|
DecalColor = FromParameter(decal),
|
||||||
};
|
};
|
||||||
|
|
||||||
public static unsafe CustomizeParameterValue FromParameter(in CustomizeParameter parameter, CustomizeParameterFlag flag)
|
public static CustomizeParameterValue FromParameter(in CustomizeParameter parameter, CustomizeParameterFlag flag)
|
||||||
=> flag switch
|
=> flag switch
|
||||||
{
|
{
|
||||||
CustomizeParameterFlag.SkinDiffuse => new CustomizeParameterValue(parameter.SkinColor),
|
CustomizeParameterFlag.SkinDiffuse => new CustomizeParameterValue(parameter.SkinColor),
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ public enum CustomizeParameterFlag : ushort
|
||||||
public static class CustomizeParameterExtensions
|
public static class CustomizeParameterExtensions
|
||||||
{
|
{
|
||||||
// Speculars are not available anymore.
|
// Speculars are not available anymore.
|
||||||
public const CustomizeParameterFlag All = (CustomizeParameterFlag)0x1FDB;
|
public const CustomizeParameterFlag All = (CustomizeParameterFlag)0x7FDB;
|
||||||
|
|
||||||
public const CustomizeParameterFlag RgbTriples = All
|
public const CustomizeParameterFlag RgbTriples = All
|
||||||
& ~(RgbaQuadruples | Percentages | Values);
|
& ~(RgbaQuadruples | Percentages | Values);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue