mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2026-02-20 14:37:46 +01:00
Add decal color, fix some bugs and improve logic and handling somewhat.
This commit is contained in:
parent
6158bcb2f9
commit
5ea779a34c
14 changed files with 351 additions and 174 deletions
|
|
@ -10,11 +10,13 @@ public ref struct CustomizeParameterDrawData(CustomizeParameterFlag flag, in Des
|
|||
public readonly CustomizeParameterFlag Flag = flag;
|
||||
public bool Locked;
|
||||
public bool DisplayApplication;
|
||||
public bool AllowRevert;
|
||||
|
||||
public Action<Vector3> ValueSetter = null!;
|
||||
public Action<bool> ApplySetter = null!;
|
||||
public Vector3 CurrentValue = data.Parameters[flag];
|
||||
public bool CurrentApply;
|
||||
public Action<CustomizeParameterValue> ValueSetter = null!;
|
||||
public Action<bool> ApplySetter = null!;
|
||||
public CustomizeParameterValue CurrentValue = data.Parameters[flag];
|
||||
public CustomizeParameterValue GameValue;
|
||||
public bool CurrentApply;
|
||||
|
||||
public static CustomizeParameterDrawData FromDesign(DesignManager manager, Design design, CustomizeParameterFlag flag)
|
||||
=> new(flag, design.DesignData)
|
||||
|
|
@ -32,5 +34,7 @@ public ref struct CustomizeParameterDrawData(CustomizeParameterFlag flag, in Des
|
|||
Locked = state.IsLocked,
|
||||
DisplayApplication = false,
|
||||
ValueSetter = v => manager.ChangeCustomizeParameter(state, flag, v, StateChanged.Source.Manual),
|
||||
GameValue = state.BaseData.Parameters[flag],
|
||||
AllowRevert = true,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ using Glamourer.GameData;
|
|||
using Glamourer.State;
|
||||
using Dalamud.Interface.Utility.Raii;
|
||||
using ImGuiNET;
|
||||
using OtterGui;
|
||||
using OtterGui.Services;
|
||||
|
||||
namespace Glamourer.Gui.Customization;
|
||||
|
|
@ -11,8 +12,11 @@ public class CustomizeParameterDrawer(Configuration config) : IService
|
|||
{
|
||||
public void Draw(DesignManager designManager, Design design)
|
||||
{
|
||||
foreach (var flag in CustomizeParameterExtensions.TripleFlags)
|
||||
DrawColorInput(CustomizeParameterDrawData.FromDesign(designManager, design, flag));
|
||||
foreach (var flag in CustomizeParameterExtensions.RgbFlags)
|
||||
DrawColorInput3(CustomizeParameterDrawData.FromDesign(designManager, design, flag));
|
||||
|
||||
foreach (var flag in CustomizeParameterExtensions.RgbaFlags)
|
||||
DrawColorInput4(CustomizeParameterDrawData.FromDesign(designManager, design, flag));
|
||||
|
||||
foreach (var flag in CustomizeParameterExtensions.PercentageFlags)
|
||||
DrawPercentageInput(CustomizeParameterDrawData.FromDesign(designManager, design, flag));
|
||||
|
|
@ -23,8 +27,11 @@ public class CustomizeParameterDrawer(Configuration config) : IService
|
|||
|
||||
public void Draw(StateManager stateManager, ActorState state)
|
||||
{
|
||||
foreach (var flag in CustomizeParameterExtensions.TripleFlags)
|
||||
DrawColorInput(CustomizeParameterDrawData.FromState(stateManager, state, flag));
|
||||
foreach (var flag in CustomizeParameterExtensions.RgbFlags)
|
||||
DrawColorInput3(CustomizeParameterDrawData.FromState(stateManager, state, flag));
|
||||
|
||||
foreach (var flag in CustomizeParameterExtensions.RgbaFlags)
|
||||
DrawColorInput4(CustomizeParameterDrawData.FromState(stateManager, state, flag));
|
||||
|
||||
foreach (var flag in CustomizeParameterExtensions.PercentageFlags)
|
||||
DrawPercentageInput(CustomizeParameterDrawData.FromState(stateManager, state, flag));
|
||||
|
|
@ -33,15 +40,30 @@ public class CustomizeParameterDrawer(Configuration config) : IService
|
|||
DrawValueInput(CustomizeParameterDrawData.FromState(stateManager, state, flag));
|
||||
}
|
||||
|
||||
private void DrawColorInput(in CustomizeParameterDrawData data)
|
||||
private void DrawColorInput3(in CustomizeParameterDrawData data)
|
||||
{
|
||||
using var id = ImRaii.PushId((int)data.Flag);
|
||||
var value = data.CurrentValue;
|
||||
var value = data.CurrentValue.InternalTriple;
|
||||
using (_ = ImRaii.Disabled(data.Locked))
|
||||
{
|
||||
if (ImGui.ColorEdit3("##value", ref value, ImGuiColorEditFlags.Float))
|
||||
data.ValueSetter(value);
|
||||
if (ImGui.ColorEdit3("##value", ref value, ImGuiColorEditFlags.Float | ImGuiColorEditFlags.HDR | ImGuiColorEditFlags.NoOptions))
|
||||
data.ValueSetter(new CustomizeParameterValue(value));
|
||||
}
|
||||
DrawRevert(data);
|
||||
|
||||
DrawApplyAndLabel(data);
|
||||
}
|
||||
|
||||
private void DrawColorInput4(in CustomizeParameterDrawData data)
|
||||
{
|
||||
using var id = ImRaii.PushId((int)data.Flag);
|
||||
var value = data.CurrentValue.InternalQuadruple;
|
||||
using (_ = ImRaii.Disabled(data.Locked))
|
||||
{
|
||||
if (ImGui.ColorEdit4("##value", ref value, ImGuiColorEditFlags.Float | ImGuiColorEditFlags.HDR | ImGuiColorEditFlags.NoOptions))
|
||||
data.ValueSetter(new CustomizeParameterValue(value));
|
||||
}
|
||||
DrawRevert(data);
|
||||
|
||||
DrawApplyAndLabel(data);
|
||||
}
|
||||
|
|
@ -54,8 +76,9 @@ public class CustomizeParameterDrawer(Configuration config) : IService
|
|||
using (_ = ImRaii.Disabled(data.Locked))
|
||||
{
|
||||
if (ImGui.InputFloat("##value", ref value, 0.1f, 0.5f))
|
||||
data.ValueSetter(new Vector3(value));
|
||||
data.ValueSetter(new CustomizeParameterValue(value));
|
||||
}
|
||||
DrawRevert(data);
|
||||
|
||||
DrawApplyAndLabel(data);
|
||||
}
|
||||
|
|
@ -67,13 +90,26 @@ public class CustomizeParameterDrawer(Configuration config) : IService
|
|||
|
||||
using (_ = ImRaii.Disabled(data.Locked))
|
||||
{
|
||||
if (ImGui.SliderFloat("##value", ref value, 0, 100, "%.2f", ImGuiSliderFlags.AlwaysClamp))
|
||||
data.ValueSetter(new Vector3(value / 100f));
|
||||
if (ImGui.SliderFloat("##value", ref value, -1000f, 1000f, "%.2f"))
|
||||
data.ValueSetter(new CustomizeParameterValue(value / 100f));
|
||||
}
|
||||
|
||||
DrawRevert(data);
|
||||
|
||||
DrawApplyAndLabel(data);
|
||||
}
|
||||
|
||||
private static void DrawRevert(in CustomizeParameterDrawData data)
|
||||
{
|
||||
if (data.Locked || !data.AllowRevert)
|
||||
return;
|
||||
|
||||
if (ImGui.IsItemClicked(ImGuiMouseButton.Right) && ImGui.GetIO().KeyCtrl)
|
||||
data.ValueSetter(data.GameValue);
|
||||
|
||||
ImGuiUtil.HoverTooltip("Hold Control and Right-click to revert to game values.");
|
||||
}
|
||||
|
||||
private static void DrawApply(in CustomizeParameterDrawData data)
|
||||
{
|
||||
if (UiHelpers.DrawCheckbox("##apply", "Apply this custom parameter when applying the Design.", data.CurrentApply, out var enabled,
|
||||
|
|
|
|||
|
|
@ -85,19 +85,13 @@ public unsafe class ModelEvaluationPanel(
|
|||
{
|
||||
if (!model.IsHuman)
|
||||
return;
|
||||
if (model.AsHuman->CustomizeParameterCBuffer == null)
|
||||
return;
|
||||
|
||||
var ptr = (CustomizeParameter*)model.AsHuman->CustomizeParameterCBuffer->UnsafeSourcePointer;
|
||||
if (ptr == null)
|
||||
return;
|
||||
|
||||
var convert = CustomizeParameterData.FromParameters(*ptr);
|
||||
var convert = model.GetParameterData();
|
||||
foreach (var flag in CustomizeParameterExtensions.AllFlags)
|
||||
{
|
||||
ImGuiUtil.DrawTableColumn(flag.ToString());
|
||||
ImGuiUtil.DrawTableColumn(string.Empty);
|
||||
ImGuiUtil.DrawTableColumn(convert[flag].ToString());
|
||||
ImGuiUtil.DrawTableColumn(convert[flag].InternalQuadruple.ToString());
|
||||
ImGui.TableNextColumn();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue