mirror of
https://github.com/goatcorp/Dalamud.git
synced 2026-02-07 08:24:37 +01:00
Merge pull request #2563 from Infiziert90/ImRaii-Widgets
Apply ImRaii to Widgets Part 1
This commit is contained in:
commit
f3694a41ff
6 changed files with 174 additions and 228 deletions
|
|
@ -5,9 +5,11 @@ using System.Threading.Tasks;
|
|||
|
||||
using Dalamud.Bindings.ImGui;
|
||||
using Dalamud.Interface.Components;
|
||||
using Dalamud.Interface.ImGuiSeStringRenderer;
|
||||
using Dalamud.Interface.Textures.Internal;
|
||||
using Dalamud.Interface.Utility;
|
||||
using Dalamud.Interface.Utility.Internal;
|
||||
using Dalamud.Interface.Utility.Raii;
|
||||
|
||||
using Lumina.Text.ReadOnly;
|
||||
|
||||
|
|
@ -18,13 +20,15 @@ namespace Dalamud.Interface.Internal.Windows.Data.Widgets;
|
|||
/// </summary>
|
||||
internal class FontAwesomeTestWidget : IDataWindowWidget
|
||||
{
|
||||
private static readonly string[] First = ["(Show All)", "(Undefined)"];
|
||||
|
||||
private List<FontAwesomeIcon>? icons;
|
||||
private List<string>? iconNames;
|
||||
private string[]? iconCategories;
|
||||
private int selectedIconCategory;
|
||||
private string iconSearchInput = string.Empty;
|
||||
private bool iconSearchChanged = true;
|
||||
private bool useFixedWidth = false;
|
||||
private bool useFixedWidth;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public string[]? CommandShortcuts { get; init; } = ["fa", "fatest", "fontawesome"];
|
||||
|
|
@ -44,11 +48,9 @@ internal class FontAwesomeTestWidget : IDataWindowWidget
|
|||
/// <inheritdoc/>
|
||||
public void Draw()
|
||||
{
|
||||
ImGui.PushStyleVar(ImGuiStyleVar.ItemSpacing, Vector2.Zero);
|
||||
using var pushedStyle = ImRaii.PushStyle(ImGuiStyleVar.ItemSpacing, Vector2.Zero);
|
||||
|
||||
this.iconCategories ??= new[] { "(Show All)", "(Undefined)" }
|
||||
.Concat(FontAwesomeHelpers.GetCategories().Skip(1))
|
||||
.ToArray();
|
||||
this.iconCategories ??= First.Concat(FontAwesomeHelpers.GetCategories().Skip(1)).ToArray();
|
||||
|
||||
if (this.iconSearchChanged)
|
||||
{
|
||||
|
|
@ -101,7 +103,8 @@ internal class FontAwesomeTestWidget : IDataWindowWidget
|
|||
ImGuiHelpers.ScaledRelativeSameLine(50f);
|
||||
ImGui.Text($"{this.iconNames?[i]}");
|
||||
ImGuiHelpers.ScaledRelativeSameLine(280f);
|
||||
ImGui.PushFont(this.useFixedWidth ? InterfaceManager.IconFontFixedWidth : InterfaceManager.IconFont);
|
||||
|
||||
using var pushedFont = ImRaii.PushFont(this.useFixedWidth ? InterfaceManager.IconFontFixedWidth : InterfaceManager.IconFont);
|
||||
ImGui.Text(this.icons[i].ToIconString());
|
||||
ImGuiHelpers.ScaledRelativeSameLine(320f);
|
||||
if (this.useFixedWidth
|
||||
|
|
@ -114,13 +117,10 @@ internal class FontAwesomeTestWidget : IDataWindowWidget
|
|||
Task.FromResult(
|
||||
Service<TextureManager>.Get().CreateTextureFromSeString(
|
||||
ReadOnlySeString.FromText(this.icons[i].ToIconString()),
|
||||
new() { Font = ImGui.GetFont(), FontSize = ImGui.GetFontSize(), ScreenOffset = Vector2.Zero })));
|
||||
new SeStringDrawParams { Font = ImGui.GetFont(), FontSize = ImGui.GetFontSize(), ScreenOffset = Vector2.Zero })));
|
||||
}
|
||||
|
||||
ImGui.PopFont();
|
||||
ImGuiHelpers.ScaledDummy(2f);
|
||||
}
|
||||
|
||||
ImGui.PopStyleVar();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ using Dalamud.Interface.ImGuiSeStringRenderer.Internal;
|
|||
using Dalamud.Interface.Textures.Internal;
|
||||
using Dalamud.Interface.Utility;
|
||||
using Dalamud.Interface.Utility.Internal;
|
||||
using Dalamud.Interface.Utility.Raii;
|
||||
using Dalamud.Storage.Assets;
|
||||
using Dalamud.Utility;
|
||||
|
||||
|
|
@ -29,7 +30,7 @@ namespace Dalamud.Interface.Internal.Windows.Data.Widgets;
|
|||
/// </summary>
|
||||
internal unsafe class SeStringRendererTestWidget : IDataWindowWidget
|
||||
{
|
||||
private static readonly string[] ThemeNames = ["Dark", "Light", "Classic FF", "Clear Blue"];
|
||||
private static readonly string[] ThemeNames = ["Dark", "Light", "Classic FF", "Clear Blue", "Clear White", "Clear Green"];
|
||||
private ImVectorWrapper<byte> testStringBuffer;
|
||||
private string testString = string.Empty;
|
||||
private ReadOnlySeString? logkind;
|
||||
|
|
@ -119,9 +120,11 @@ internal unsafe class SeStringRendererTestWidget : IDataWindowWidget
|
|||
|
||||
ImGui.SameLine();
|
||||
var t4 = this.style.ThemeIndex ?? AtkStage.Instance()->AtkUIColorHolder->ActiveColorThemeType;
|
||||
ImGui.PushItemWidth(ImGui.CalcTextSize("WWWWWWWWWWWWWW"u8).X);
|
||||
if (ImGui.Combo("##theme", ref t4, ThemeNames))
|
||||
this.style.ThemeIndex = t4;
|
||||
using (ImRaii.ItemWidth(ImGui.CalcTextSize("WWWWWWWWWWWWWW"u8).X))
|
||||
{
|
||||
if (ImGui.Combo("##theme", ref t4, ThemeNames))
|
||||
this.style.ThemeIndex = t4;
|
||||
}
|
||||
|
||||
ImGui.SameLine();
|
||||
t = this.style.LinkUnderlineThickness > 0f;
|
||||
|
|
@ -192,22 +195,19 @@ internal unsafe class SeStringRendererTestWidget : IDataWindowWidget
|
|||
dl.PushClipRect(clipMin, clipMax);
|
||||
ImGuiHelpers.CompileSeStringWrapped(
|
||||
"<icon(1)>Test test<icon(1)>",
|
||||
new SeStringDrawParams
|
||||
{ Color = 0xFFFFFFFF, WrapWidth = float.MaxValue, TargetDrawList = dl });
|
||||
new SeStringDrawParams { Color = 0xFFFFFFFF, WrapWidth = float.MaxValue, TargetDrawList = dl });
|
||||
dl.PopClipRect();
|
||||
}
|
||||
|
||||
if (ImGui.CollapsingHeader("Addon Table"u8))
|
||||
{
|
||||
if (ImGui.BeginTable("Addon Sheet"u8, 3))
|
||||
using var table = ImRaii.Table("Addon Sheet"u8, 3);
|
||||
if (table.Success)
|
||||
{
|
||||
ImGui.TableSetupScrollFreeze(0, 1);
|
||||
ImGui.TableSetupColumn("Row ID"u8, ImGuiTableColumnFlags.WidthFixed, ImGui.CalcTextSize("0000000"u8).X);
|
||||
ImGui.TableSetupColumn("Text"u8, ImGuiTableColumnFlags.WidthStretch);
|
||||
ImGui.TableSetupColumn(
|
||||
"Misc"u8,
|
||||
ImGuiTableColumnFlags.WidthFixed,
|
||||
ImGui.CalcTextSize("AAAAAAAAAAAAAAAAA"u8).X);
|
||||
ImGui.TableSetupColumn("Misc"u8, ImGuiTableColumnFlags.WidthFixed, ImGui.CalcTextSize("AAAAAAAAAAAAAAAAA"u8).X);
|
||||
ImGui.TableHeadersRow();
|
||||
|
||||
var addon = Service<DataManager>.GetNullable()?.GetExcelSheet<Addon>() ??
|
||||
|
|
@ -222,7 +222,7 @@ internal unsafe class SeStringRendererTestWidget : IDataWindowWidget
|
|||
var row = addon.GetRowAt(i);
|
||||
|
||||
ImGui.TableNextRow();
|
||||
ImGui.PushID(i);
|
||||
using var pushedId = ImRaii.PushId(i);
|
||||
|
||||
ImGui.TableNextColumn();
|
||||
ImGui.AlignTextToFramePadding();
|
||||
|
|
@ -234,14 +234,11 @@ internal unsafe class SeStringRendererTestWidget : IDataWindowWidget
|
|||
|
||||
ImGui.TableNextColumn();
|
||||
if (ImGui.Button("Print to Chat"u8))
|
||||
Service<ChatGui>.Get().Print(row.Text.ToDalamudString());
|
||||
|
||||
ImGui.PopID();
|
||||
Service<ChatGui>.Get().Print(row.Text);
|
||||
}
|
||||
}
|
||||
|
||||
clipper.Destroy();
|
||||
ImGui.EndTable();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -258,9 +255,7 @@ internal unsafe class SeStringRendererTestWidget : IDataWindowWidget
|
|||
|
||||
if (ImGui.Button("Print to Chat Log"u8))
|
||||
{
|
||||
Service<ChatGui>.Get().Print(
|
||||
Game.Text.SeStringHandling.SeString.Parse(
|
||||
Service<SeStringRenderer>.Get().CompileAndCache(this.testString).Data.Span));
|
||||
Service<ChatGui>.Get().Print(Service<SeStringRenderer>.Get().CompileAndCache(this.testString));
|
||||
}
|
||||
|
||||
ImGui.SameLine();
|
||||
|
|
@ -315,6 +310,7 @@ internal unsafe class SeStringRendererTestWidget : IDataWindowWidget
|
|||
var len = this.testStringBuffer.StorageSpan.IndexOf((byte)0);
|
||||
if (len + 4 >= this.testStringBuffer.Capacity)
|
||||
this.testStringBuffer.EnsureCapacityExponential(len + 4);
|
||||
|
||||
if (len < this.testStringBuffer.Capacity)
|
||||
{
|
||||
this.testStringBuffer.LengthUnsafe = len;
|
||||
|
|
|
|||
|
|
@ -266,8 +266,7 @@ internal class TaskSchedulerWidget : IDataWindowWidget
|
|||
|
||||
ImGui.Text($"{this.downloadState.Downloaded:##,###}/{this.downloadState.Total:##,###} ({this.downloadState.Percentage:0.00}%)");
|
||||
|
||||
using var disabled =
|
||||
ImRaii.Disabled(this.downloadTask?.IsCompleted is false || this.localPath[0] == 0);
|
||||
using var disabled = ImRaii.Disabled(this.downloadTask?.IsCompleted is false || this.localPath[0] == 0);
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.Text("Download"u8);
|
||||
ImGui.SameLine();
|
||||
|
|
@ -388,27 +387,19 @@ internal class TaskSchedulerWidget : IDataWindowWidget
|
|||
if (task.Task == null)
|
||||
subTime = task.FinishTime;
|
||||
|
||||
switch (task.Status)
|
||||
using var pushedColor = task.Status switch
|
||||
{
|
||||
case TaskStatus.Created:
|
||||
case TaskStatus.WaitingForActivation:
|
||||
case TaskStatus.WaitingToRun:
|
||||
ImGui.PushStyleColor(ImGuiCol.Header, ImGuiColors.DalamudGrey);
|
||||
break;
|
||||
case TaskStatus.Running:
|
||||
case TaskStatus.WaitingForChildrenToComplete:
|
||||
ImGui.PushStyleColor(ImGuiCol.Header, ImGuiColors.ParsedBlue);
|
||||
break;
|
||||
case TaskStatus.RanToCompletion:
|
||||
ImGui.PushStyleColor(ImGuiCol.Header, ImGuiColors.ParsedGreen);
|
||||
break;
|
||||
case TaskStatus.Canceled:
|
||||
case TaskStatus.Faulted:
|
||||
ImGui.PushStyleColor(ImGuiCol.Header, ImGuiColors.DalamudRed);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
TaskStatus.Created or TaskStatus.WaitingForActivation or TaskStatus.WaitingToRun
|
||||
=> ImRaii.PushColor(ImGuiCol.Header, ImGuiColors.DalamudGrey),
|
||||
TaskStatus.Running or TaskStatus.WaitingForChildrenToComplete
|
||||
=> ImRaii.PushColor(ImGuiCol.Header, ImGuiColors.ParsedBlue),
|
||||
TaskStatus.RanToCompletion
|
||||
=> ImRaii.PushColor(ImGuiCol.Header, ImGuiColors.ParsedGreen),
|
||||
TaskStatus.Canceled or TaskStatus.Faulted
|
||||
=> ImRaii.PushColor(ImGuiCol.Header, ImGuiColors.DalamudRed),
|
||||
|
||||
_ => throw new ArgumentOutOfRangeException(),
|
||||
};
|
||||
|
||||
if (ImGui.CollapsingHeader($"#{task.Id} - {task.Status} {(subTime - task.StartTime).TotalMilliseconds}ms###task{i}"))
|
||||
{
|
||||
|
|
@ -418,8 +409,7 @@ internal class TaskSchedulerWidget : IDataWindowWidget
|
|||
{
|
||||
try
|
||||
{
|
||||
var cancelFunc =
|
||||
typeof(Task).GetMethod("InternalCancel", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
var cancelFunc = typeof(Task).GetMethod("InternalCancel", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
cancelFunc?.Invoke(task, null);
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
@ -430,7 +420,7 @@ internal class TaskSchedulerWidget : IDataWindowWidget
|
|||
|
||||
ImGuiHelpers.ScaledDummy(10);
|
||||
|
||||
ImGui.Text(task.StackTrace?.ToString());
|
||||
ImGui.Text(task.StackTrace?.ToString() ?? "Null StackTrace");
|
||||
|
||||
if (task.Exception != null)
|
||||
{
|
||||
|
|
@ -443,8 +433,6 @@ internal class TaskSchedulerWidget : IDataWindowWidget
|
|||
{
|
||||
task.IsBeingViewed = false;
|
||||
}
|
||||
|
||||
ImGui.PopStyleColor(1);
|
||||
}
|
||||
|
||||
this.fileDialogManager.Draw();
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ using Dalamud.Interface.Textures.Internal.SharedImmediateTextures;
|
|||
using Dalamud.Interface.Textures.TextureWraps;
|
||||
using Dalamud.Interface.Utility;
|
||||
using Dalamud.Interface.Utility.Internal;
|
||||
using Dalamud.Interface.Utility.Raii;
|
||||
using Dalamud.Plugin.Services;
|
||||
using Dalamud.Storage.Assets;
|
||||
using Dalamud.Utility;
|
||||
|
|
@ -29,6 +30,10 @@ namespace Dalamud.Interface.Internal.Windows.Data.Widgets;
|
|||
/// </summary>
|
||||
internal class TexWidget : IDataWindowWidget
|
||||
{
|
||||
private const ImGuiTableFlags TableFlags = ImGuiTableFlags.Sortable | ImGuiTableFlags.SortTristate | ImGuiTableFlags.SortMulti |
|
||||
ImGuiTableFlags.Reorderable | ImGuiTableFlags.Resizable | ImGuiTableFlags.NoBordersInBodyUntilResize |
|
||||
ImGuiTableFlags.NoSavedSettings;
|
||||
|
||||
// TODO: move tracking implementation to PluginStats where applicable,
|
||||
// and show stats over there instead of TexWidget.
|
||||
private static readonly Dictionary<
|
||||
|
|
@ -49,7 +54,7 @@ internal class TexWidget : IDataWindowWidget
|
|||
private string allLoadedTexturesTableName = "##table";
|
||||
private string iconId = "18";
|
||||
private bool hiRes = true;
|
||||
private bool hq = false;
|
||||
private bool hq;
|
||||
private string inputTexPath = string.Empty;
|
||||
private string inputFilePath = string.Empty;
|
||||
private Assembly[]? inputManifestResourceAssemblyCandidates;
|
||||
|
|
@ -140,46 +145,40 @@ internal class TexWidget : IDataWindowWidget
|
|||
|
||||
lock (this.textureManager.BlameTracker)
|
||||
{
|
||||
using var pushedId = ImRaii.PushId("blames"u8);
|
||||
var allBlames = this.textureManager.BlameTracker;
|
||||
ImGui.PushID("blames"u8);
|
||||
var sizeSum = allBlames.Sum(static x => Math.Max(0, x.RawSpecs.EstimatedBytes));
|
||||
if (ImGui.CollapsingHeader(
|
||||
$"All Loaded Textures: {allBlames.Count:n0} ({Util.FormatBytes(sizeSum)})###header"))
|
||||
if (ImGui.CollapsingHeader($"All Loaded Textures: {allBlames.Count:n0} ({Util.FormatBytes(sizeSum)})###header"))
|
||||
this.DrawBlame(allBlames);
|
||||
ImGui.PopID();
|
||||
}
|
||||
|
||||
ImGui.PushID("loadedGameTextures"u8);
|
||||
if (ImGui.CollapsingHeader(
|
||||
$"Loaded Game Textures: {this.textureManager.Shared.ForDebugGamePathTextures.Count:n0}###header"))
|
||||
this.DrawLoadedTextures(this.textureManager.Shared.ForDebugGamePathTextures);
|
||||
ImGui.PopID();
|
||||
using (ImRaii.PushId("loadedGameTextures"u8))
|
||||
{
|
||||
if (ImGui.CollapsingHeader($"Loaded Game Textures: {this.textureManager.Shared.ForDebugGamePathTextures.Count:n0}###header"))
|
||||
this.DrawLoadedTextures(this.textureManager.Shared.ForDebugGamePathTextures);
|
||||
}
|
||||
|
||||
ImGui.PushID("loadedFileTextures"u8);
|
||||
if (ImGui.CollapsingHeader(
|
||||
$"Loaded File Textures: {this.textureManager.Shared.ForDebugFileSystemTextures.Count:n0}###header"))
|
||||
this.DrawLoadedTextures(this.textureManager.Shared.ForDebugFileSystemTextures);
|
||||
ImGui.PopID();
|
||||
using (ImRaii.PushId("loadedFileTextures"u8))
|
||||
{
|
||||
if (ImGui.CollapsingHeader($"Loaded File Textures: {this.textureManager.Shared.ForDebugFileSystemTextures.Count:n0}###header"))
|
||||
this.DrawLoadedTextures(this.textureManager.Shared.ForDebugFileSystemTextures);
|
||||
}
|
||||
|
||||
ImGui.PushID("loadedManifestResourceTextures"u8);
|
||||
if (ImGui.CollapsingHeader(
|
||||
$"Loaded Manifest Resource Textures: {this.textureManager.Shared.ForDebugManifestResourceTextures.Count:n0}###header"))
|
||||
this.DrawLoadedTextures(this.textureManager.Shared.ForDebugManifestResourceTextures);
|
||||
ImGui.PopID();
|
||||
using (ImRaii.PushId("loadedManifestResourceTextures"u8))
|
||||
{
|
||||
if (ImGui.CollapsingHeader($"Loaded Manifest Resource Textures: {this.textureManager.Shared.ForDebugManifestResourceTextures.Count:n0}###header"))
|
||||
this.DrawLoadedTextures(this.textureManager.Shared.ForDebugManifestResourceTextures);
|
||||
}
|
||||
|
||||
lock (this.textureManager.Shared.ForDebugInvalidatedTextures)
|
||||
{
|
||||
ImGui.PushID("invalidatedTextures"u8);
|
||||
if (ImGui.CollapsingHeader(
|
||||
$"Invalidated: {this.textureManager.Shared.ForDebugInvalidatedTextures.Count:n0}###header"))
|
||||
{
|
||||
using var pushedId = ImRaii.PushId("invalidatedTextures"u8);
|
||||
if (ImGui.CollapsingHeader($"Invalidated: {this.textureManager.Shared.ForDebugInvalidatedTextures.Count:n0}###header"))
|
||||
this.DrawLoadedTextures(this.textureManager.Shared.ForDebugInvalidatedTextures);
|
||||
}
|
||||
|
||||
ImGui.PopID();
|
||||
}
|
||||
|
||||
ImGui.Dummy(new(ImGui.GetTextLineHeightWithSpacing()));
|
||||
var textHeightSpacing = new Vector2(ImGui.GetTextLineHeightWithSpacing());
|
||||
ImGui.Dummy(textHeightSpacing);
|
||||
|
||||
if (!this.textureManager.HasClipboardImage())
|
||||
{
|
||||
|
|
@ -192,59 +191,53 @@ internal class TexWidget : IDataWindowWidget
|
|||
|
||||
if (ImGui.CollapsingHeader(nameof(ITextureProvider.GetFromGameIcon)))
|
||||
{
|
||||
ImGui.PushID(nameof(this.DrawGetFromGameIcon));
|
||||
using var pushedId = ImRaii.PushId(nameof(this.DrawGetFromGameIcon));
|
||||
this.DrawGetFromGameIcon();
|
||||
ImGui.PopID();
|
||||
}
|
||||
|
||||
if (ImGui.CollapsingHeader(nameof(ITextureProvider.GetFromGame)))
|
||||
{
|
||||
ImGui.PushID(nameof(this.DrawGetFromGame));
|
||||
using var pushedId = ImRaii.PushId(nameof(this.DrawGetFromGame));
|
||||
this.DrawGetFromGame();
|
||||
ImGui.PopID();
|
||||
}
|
||||
|
||||
if (ImGui.CollapsingHeader(nameof(ITextureProvider.GetFromFile)))
|
||||
{
|
||||
ImGui.PushID(nameof(this.DrawGetFromFile));
|
||||
using var pushedId = ImRaii.PushId(nameof(this.DrawGetFromFile));
|
||||
this.DrawGetFromFile();
|
||||
ImGui.PopID();
|
||||
}
|
||||
|
||||
if (ImGui.CollapsingHeader(nameof(ITextureProvider.GetFromManifestResource)))
|
||||
{
|
||||
ImGui.PushID(nameof(this.DrawGetFromManifestResource));
|
||||
using var pushedId = ImRaii.PushId(nameof(this.DrawGetFromManifestResource));
|
||||
this.DrawGetFromManifestResource();
|
||||
ImGui.PopID();
|
||||
}
|
||||
|
||||
if (ImGui.CollapsingHeader(nameof(ITextureProvider.CreateFromImGuiViewportAsync)))
|
||||
{
|
||||
ImGui.PushID(nameof(this.DrawCreateFromImGuiViewportAsync));
|
||||
using var pushedId = ImRaii.PushId(nameof(this.DrawCreateFromImGuiViewportAsync));
|
||||
this.DrawCreateFromImGuiViewportAsync();
|
||||
ImGui.PopID();
|
||||
}
|
||||
|
||||
if (ImGui.CollapsingHeader("UV"u8))
|
||||
{
|
||||
ImGui.PushID(nameof(this.DrawUvInput));
|
||||
using var pushedId = ImRaii.PushId(nameof(this.DrawUvInput));
|
||||
this.DrawUvInput();
|
||||
ImGui.PopID();
|
||||
}
|
||||
|
||||
if (ImGui.CollapsingHeader($"CropCopy##{nameof(this.DrawExistingTextureModificationArgs)}"))
|
||||
{
|
||||
ImGui.PushID(nameof(this.DrawExistingTextureModificationArgs));
|
||||
using var pushedId = ImRaii.PushId(nameof(this.DrawExistingTextureModificationArgs));
|
||||
this.DrawExistingTextureModificationArgs();
|
||||
ImGui.PopID();
|
||||
}
|
||||
|
||||
ImGui.Dummy(new(ImGui.GetTextLineHeightWithSpacing()));
|
||||
ImGui.Dummy(textHeightSpacing);
|
||||
|
||||
Action? runLater = null;
|
||||
foreach (var t in this.addedTextures)
|
||||
{
|
||||
ImGui.PushID(t.Id);
|
||||
using var pushedId = ImRaii.PushId(t.Id);
|
||||
|
||||
if (ImGui.CollapsingHeader($"Tex #{t.Id} {t}###header", ImGuiTreeNodeFlags.DefaultOpen))
|
||||
{
|
||||
if (ImGui.Button("X"u8))
|
||||
|
|
@ -336,8 +329,6 @@ internal class TexWidget : IDataWindowWidget
|
|||
ImGui.Text(e.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
ImGui.PopID();
|
||||
}
|
||||
|
||||
runLater?.Invoke();
|
||||
|
|
@ -357,18 +348,16 @@ internal class TexWidget : IDataWindowWidget
|
|||
if (ImGui.Button("Reset Columns"u8))
|
||||
this.allLoadedTexturesTableName = "##table" + Environment.TickCount64;
|
||||
|
||||
if (!ImGui.BeginTable(
|
||||
this.allLoadedTexturesTableName,
|
||||
(int)DrawBlameTableColumnUserId.ColumnCount,
|
||||
ImGuiTableFlags.Sortable | ImGuiTableFlags.SortTristate | ImGuiTableFlags.SortMulti |
|
||||
ImGuiTableFlags.Reorderable | ImGuiTableFlags.Resizable | ImGuiTableFlags.NoBordersInBodyUntilResize |
|
||||
ImGuiTableFlags.NoSavedSettings))
|
||||
using var table = ImRaii.Table(this.allLoadedTexturesTableName, (int)DrawBlameTableColumnUserId.ColumnCount, TableFlags);
|
||||
if (!table.Success)
|
||||
return;
|
||||
|
||||
const int numIcons = 1;
|
||||
float iconWidths;
|
||||
using (im.IconFontHandle?.Push())
|
||||
{
|
||||
iconWidths = ImGui.CalcTextSize(FontAwesomeIcon.Save.ToIconString()).X;
|
||||
}
|
||||
|
||||
ImGui.TableSetupScrollFreeze(0, 1);
|
||||
ImGui.TableSetupColumn(
|
||||
|
|
@ -463,7 +452,8 @@ internal class TexWidget : IDataWindowWidget
|
|||
{
|
||||
var wrap = allBlames[i];
|
||||
ImGui.TableNextRow();
|
||||
ImGui.PushID(i);
|
||||
|
||||
using var pushedId = ImRaii.PushId(i);
|
||||
|
||||
ImGui.TableNextColumn();
|
||||
ImGui.AlignTextToFramePadding();
|
||||
|
|
@ -480,9 +470,8 @@ internal class TexWidget : IDataWindowWidget
|
|||
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
ImGui.BeginTooltip();
|
||||
using var tooltip = ImRaii.Tooltip();
|
||||
ImGui.Image(wrap.Handle, wrap.Size);
|
||||
ImGui.EndTooltip();
|
||||
}
|
||||
|
||||
ImGui.TableNextColumn();
|
||||
|
|
@ -504,21 +493,19 @@ internal class TexWidget : IDataWindowWidget
|
|||
ImGui.TableNextColumn();
|
||||
lock (wrap.OwnerPlugins)
|
||||
this.TextColumnCopiable(string.Join(", ", wrap.OwnerPlugins.Select(static x => x.Name)), false, true);
|
||||
|
||||
ImGui.PopID();
|
||||
}
|
||||
}
|
||||
|
||||
clipper.Destroy();
|
||||
ImGui.EndTable();
|
||||
|
||||
ImGuiHelpers.ScaledDummy(10);
|
||||
}
|
||||
|
||||
private unsafe void DrawLoadedTextures(ICollection<SharedImmediateTexture> textures)
|
||||
private void DrawLoadedTextures(ICollection<SharedImmediateTexture> textures)
|
||||
{
|
||||
var im = Service<InterfaceManager>.Get();
|
||||
if (!ImGui.BeginTable("##table"u8, 6))
|
||||
using var table = ImRaii.Table("##table"u8, 6);
|
||||
if (!table.Success)
|
||||
return;
|
||||
|
||||
const int numIcons = 4;
|
||||
|
|
@ -576,7 +563,7 @@ internal class TexWidget : IDataWindowWidget
|
|||
}
|
||||
|
||||
var remain = texture.SelfReferenceExpiresInForDebug;
|
||||
ImGui.PushID(row);
|
||||
using var pushedId = ImRaii.PushId(row);
|
||||
|
||||
ImGui.TableNextColumn();
|
||||
ImGui.AlignTextToFramePadding();
|
||||
|
|
@ -603,28 +590,26 @@ internal class TexWidget : IDataWindowWidget
|
|||
|
||||
if (ImGui.IsItemHovered() && texture.GetWrapOrDefault(null) is { } immediate)
|
||||
{
|
||||
ImGui.BeginTooltip();
|
||||
using var tooltip = ImRaii.Tooltip();
|
||||
ImGui.Image(immediate.Handle, immediate.Size);
|
||||
ImGui.EndTooltip();
|
||||
}
|
||||
|
||||
ImGui.SameLine();
|
||||
if (ImGuiComponents.IconButton(FontAwesomeIcon.Sync))
|
||||
this.textureManager.InvalidatePaths([texture.SourcePathForDebug]);
|
||||
|
||||
if (ImGui.IsItemHovered())
|
||||
ImGui.SetTooltip($"Call {nameof(ITextureSubstitutionProvider.InvalidatePaths)}.");
|
||||
|
||||
ImGui.SameLine();
|
||||
if (remain <= 0)
|
||||
ImGui.BeginDisabled();
|
||||
if (ImGuiComponents.IconButton(FontAwesomeIcon.Trash))
|
||||
texture.ReleaseSelfReference(true);
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
ImGui.SetTooltip("Release self-reference immediately."u8);
|
||||
if (remain <= 0)
|
||||
ImGui.EndDisabled();
|
||||
using (ImRaii.Disabled(remain <= 0))
|
||||
{
|
||||
if (ImGuiComponents.IconButton(FontAwesomeIcon.Trash))
|
||||
texture.ReleaseSelfReference(true);
|
||||
|
||||
ImGui.PopID();
|
||||
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
|
||||
ImGui.SetTooltip("Release self-reference immediately."u8);
|
||||
}
|
||||
}
|
||||
|
||||
if (!valid)
|
||||
|
|
@ -633,7 +618,6 @@ internal class TexWidget : IDataWindowWidget
|
|||
}
|
||||
|
||||
clipper.Destroy();
|
||||
ImGui.EndTable();
|
||||
|
||||
ImGuiHelpers.ScaledDummy(10);
|
||||
}
|
||||
|
|
@ -752,10 +736,7 @@ internal class TexWidget : IDataWindowWidget
|
|||
{
|
||||
ImGui.SameLine();
|
||||
if (ImGui.Button("Load File (Async)"u8))
|
||||
{
|
||||
this.addedTextures.Add(
|
||||
new(Api10: this.textureManager.Shared.GetFromManifestResource(assembly, name).RentAsync()));
|
||||
}
|
||||
this.addedTextures.Add(new(Api10: this.textureManager.Shared.GetFromManifestResource(assembly, name).RentAsync()));
|
||||
|
||||
ImGui.SameLine();
|
||||
if (ImGui.Button("Load File (Immediate)"u8))
|
||||
|
|
@ -768,21 +749,20 @@ internal class TexWidget : IDataWindowWidget
|
|||
private void DrawCreateFromImGuiViewportAsync()
|
||||
{
|
||||
var viewports = ImGui.GetPlatformIO().Viewports;
|
||||
if (ImGui.BeginCombo(
|
||||
nameof(this.viewportTextureArgs.ViewportId),
|
||||
$"{this.viewportIndexInt}. {viewports[this.viewportIndexInt].ID:X08}"))
|
||||
using (var combo = ImRaii.Combo(nameof(this.viewportTextureArgs.ViewportId), $"{this.viewportIndexInt}. {viewports[this.viewportIndexInt].ID:X08}"))
|
||||
{
|
||||
for (var i = 0; i < viewports.Size; i++)
|
||||
if (combo.Success)
|
||||
{
|
||||
var sel = this.viewportIndexInt == i;
|
||||
if (ImGui.Selectable($"#{i}: {viewports[i].ID:X08}", ref sel))
|
||||
for (var i = 0; i < viewports.Size; i++)
|
||||
{
|
||||
this.viewportIndexInt = i;
|
||||
ImGui.SetItemDefaultFocus();
|
||||
var sel = this.viewportIndexInt == i;
|
||||
if (ImGui.Selectable($"#{i}: {viewports[i].ID:X08}", ref sel))
|
||||
{
|
||||
this.viewportIndexInt = i;
|
||||
ImGui.SetItemDefaultFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ImGui.EndCombo();
|
||||
}
|
||||
|
||||
var b = this.viewportTextureArgs.KeepTransparency;
|
||||
|
|
@ -844,17 +824,12 @@ internal class TexWidget : IDataWindowWidget
|
|||
}
|
||||
|
||||
this.supportedRenderTargetFormatNames ??= this.supportedRenderTargetFormats.Select(Enum.GetName).ToArray();
|
||||
ImGui.Combo(
|
||||
nameof(this.textureModificationArgs.DxgiFormat),
|
||||
ref this.renderTargetChoiceInt,
|
||||
this.supportedRenderTargetFormatNames);
|
||||
ImGui.Combo(nameof(this.textureModificationArgs.DxgiFormat), ref this.renderTargetChoiceInt, this.supportedRenderTargetFormatNames);
|
||||
|
||||
Span<int> wh = stackalloc int[2];
|
||||
wh[0] = this.textureModificationArgs.NewWidth;
|
||||
wh[1] = this.textureModificationArgs.NewHeight;
|
||||
if (ImGui.InputInt(
|
||||
$"{nameof(this.textureModificationArgs.NewWidth)}/{nameof(this.textureModificationArgs.NewHeight)}",
|
||||
wh))
|
||||
if (ImGui.InputInt($"{nameof(this.textureModificationArgs.NewWidth)}/{nameof(this.textureModificationArgs.NewHeight)}", wh))
|
||||
{
|
||||
this.textureModificationArgs.NewWidth = wh[0];
|
||||
this.textureModificationArgs.NewHeight = wh[1];
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ using System.Numerics;
|
|||
using System.Text;
|
||||
|
||||
using Dalamud.Bindings.ImGui;
|
||||
using Dalamud.Interface.Utility.Raii;
|
||||
using Dalamud.Data;
|
||||
using Dalamud.Interface.ImGuiNotification;
|
||||
using Dalamud.Interface.ImGuiNotification.Internal;
|
||||
|
|
@ -33,7 +34,7 @@ internal class UiColorWidget : IDataWindowWidget
|
|||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public unsafe void Draw()
|
||||
public void Draw()
|
||||
{
|
||||
var colors = Service<DataManager>.GetNullable()?.GetExcelSheet<UIColor>()
|
||||
?? throw new InvalidOperationException("UIColor sheet not loaded.");
|
||||
|
|
@ -45,7 +46,9 @@ internal class UiColorWidget : IDataWindowWidget
|
|||
"<edgecolor(0xEEEEFF)><color(0x0000FF)>BB<color(stackcolor)><edgecolor(stackcolor)>.<br>" +
|
||||
"· Click on a color to copy the color code.<br>" +
|
||||
"· Hover on a color to preview the text with edge, when the next color has been used together.");
|
||||
if (!ImGui.BeginTable("UIColor"u8, 7))
|
||||
|
||||
using var table = ImRaii.Table("UIColor"u8, 7);
|
||||
if (!table.Success)
|
||||
return;
|
||||
|
||||
ImGui.TableSetupScrollFreeze(0, 1);
|
||||
|
|
@ -94,61 +97,61 @@ internal class UiColorWidget : IDataWindowWidget
|
|||
|
||||
ImGui.TableNextColumn();
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.PushID($"row{id}_dark");
|
||||
if (this.DrawColorColumn(row.Dark) &&
|
||||
adjacentRow.HasValue)
|
||||
DrawEdgePreview(id, row.Dark, adjacentRow.Value.Dark);
|
||||
ImGui.PopID();
|
||||
using (ImRaii.PushId($"row{id}_dark"))
|
||||
{
|
||||
if (this.DrawColorColumn(row.Dark) && adjacentRow.HasValue)
|
||||
DrawEdgePreview(id, row.Dark, adjacentRow.Value.Dark);
|
||||
}
|
||||
|
||||
ImGui.TableNextColumn();
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.PushID($"row{id}_light");
|
||||
if (this.DrawColorColumn(row.Light) &&
|
||||
adjacentRow.HasValue)
|
||||
DrawEdgePreview(id, row.Light, adjacentRow.Value.Light);
|
||||
ImGui.PopID();
|
||||
using (ImRaii.PushId($"row{id}_light"))
|
||||
{
|
||||
if (this.DrawColorColumn(row.Light) && adjacentRow.HasValue)
|
||||
DrawEdgePreview(id, row.Light, adjacentRow.Value.Light);
|
||||
}
|
||||
|
||||
ImGui.TableNextColumn();
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.PushID($"row{id}_classic");
|
||||
if (this.DrawColorColumn(row.ClassicFF) &&
|
||||
adjacentRow.HasValue)
|
||||
DrawEdgePreview(id, row.ClassicFF, adjacentRow.Value.ClassicFF);
|
||||
ImGui.PopID();
|
||||
using (ImRaii.PushId($"row{id}_classic"))
|
||||
{
|
||||
if (this.DrawColorColumn(row.ClassicFF) && adjacentRow.HasValue)
|
||||
DrawEdgePreview(id, row.ClassicFF, adjacentRow.Value.ClassicFF);
|
||||
}
|
||||
|
||||
ImGui.TableNextColumn();
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.PushID($"row{id}_blue");
|
||||
if (this.DrawColorColumn(row.ClearBlue) &&
|
||||
adjacentRow.HasValue)
|
||||
DrawEdgePreview(id, row.ClearBlue, adjacentRow.Value.ClearBlue);
|
||||
ImGui.PopID();
|
||||
using (ImRaii.PushId($"row{id}_blue"))
|
||||
{
|
||||
if (this.DrawColorColumn(row.ClearBlue) && adjacentRow.HasValue)
|
||||
DrawEdgePreview(id, row.ClearBlue, adjacentRow.Value.ClearBlue);
|
||||
}
|
||||
|
||||
ImGui.TableNextColumn();
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.PushID($"row{id}_white");
|
||||
if (this.DrawColorColumn(row.ClearWhite) &&
|
||||
adjacentRow.HasValue)
|
||||
DrawEdgePreview(id, row.ClearWhite, adjacentRow.Value.ClearWhite);
|
||||
ImGui.PopID();
|
||||
using (ImRaii.PushId($"row{id}_white"))
|
||||
{
|
||||
if (this.DrawColorColumn(row.ClearWhite) && adjacentRow.HasValue)
|
||||
DrawEdgePreview(id, row.ClearWhite, adjacentRow.Value.ClearWhite);
|
||||
}
|
||||
|
||||
ImGui.TableNextColumn();
|
||||
ImGui.AlignTextToFramePadding();
|
||||
ImGui.PushID($"row{id}_green");
|
||||
if (this.DrawColorColumn(row.ClearGreen) &&
|
||||
adjacentRow.HasValue)
|
||||
DrawEdgePreview(id, row.ClearGreen, adjacentRow.Value.ClearGreen);
|
||||
ImGui.PopID();
|
||||
using (ImRaii.PushId($"row{id}_green"))
|
||||
{
|
||||
if (this.DrawColorColumn(row.ClearGreen) && adjacentRow.HasValue)
|
||||
DrawEdgePreview(id, row.ClearGreen, adjacentRow.Value.ClearGreen);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
clipper.Destroy();
|
||||
ImGui.EndTable();
|
||||
}
|
||||
|
||||
private static void DrawEdgePreview(uint id, uint sheetColor, uint sheetColor2)
|
||||
{
|
||||
ImGui.BeginTooltip();
|
||||
using var tooltip = ImRaii.Tooltip();
|
||||
|
||||
Span<byte> buf = stackalloc byte[256];
|
||||
var ptr = 0;
|
||||
ptr += Encoding.UTF8.GetBytes("<colortype(", buf[ptr..]);
|
||||
|
|
@ -185,7 +188,6 @@ internal class UiColorWidget : IDataWindowWidget
|
|||
EdgeColor = BinaryPrimitives.ReverseEndianness(sheetColor) | 0xFF000000u,
|
||||
WrapWidth = float.PositiveInfinity,
|
||||
});
|
||||
ImGui.EndTooltip();
|
||||
}
|
||||
|
||||
private bool DrawColorColumn(uint sheetColor)
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ using Dalamud.Interface.Colors;
|
|||
using Dalamud.Interface.Components;
|
||||
using Dalamud.Interface.Textures.Internal;
|
||||
using Dalamud.Interface.Utility;
|
||||
using Dalamud.Interface.Utility.Raii;
|
||||
using Dalamud.Memory;
|
||||
|
||||
using Lumina.Data.Files;
|
||||
|
|
@ -163,17 +164,19 @@ internal class UldWidget : IDataWindowWidget
|
|||
ImGuiColors.DalamudRed,
|
||||
$"Error: {nameof(UldFile.AssetData)} is not populated.");
|
||||
}
|
||||
else if (ImGui.BeginTable("##uldTextureEntries"u8, 3, ImGuiTableFlags.RowBg | ImGuiTableFlags.Borders))
|
||||
else
|
||||
{
|
||||
ImGui.TableSetupColumn("Id"u8, ImGuiTableColumnFlags.WidthFixed, ImGui.CalcTextSize("000000"u8).X);
|
||||
ImGui.TableSetupColumn("Path"u8, ImGuiTableColumnFlags.WidthStretch);
|
||||
ImGui.TableSetupColumn("Actions"u8, ImGuiTableColumnFlags.WidthFixed, ImGui.CalcTextSize("Preview___"u8).X);
|
||||
ImGui.TableHeadersRow();
|
||||
using var table = ImRaii.Table("##uldTextureEntries"u8, 3, ImGuiTableFlags.RowBg | ImGuiTableFlags.Borders);
|
||||
if (table.Success)
|
||||
{
|
||||
ImGui.TableSetupColumn("Id"u8, ImGuiTableColumnFlags.WidthFixed, ImGui.CalcTextSize("000000"u8).X);
|
||||
ImGui.TableSetupColumn("Path"u8, ImGuiTableColumnFlags.WidthStretch);
|
||||
ImGui.TableSetupColumn("Actions"u8, ImGuiTableColumnFlags.WidthFixed, ImGui.CalcTextSize("Preview___"u8).X);
|
||||
ImGui.TableHeadersRow();
|
||||
|
||||
foreach (var textureEntry in uld.AssetData)
|
||||
this.DrawTextureEntry(textureEntry, textureManager);
|
||||
|
||||
ImGui.EndTable();
|
||||
foreach (var textureEntry in uld.AssetData)
|
||||
this.DrawTextureEntry(textureEntry, textureManager);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -287,7 +290,7 @@ internal class UldWidget : IDataWindowWidget
|
|||
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
ImGui.BeginTooltip();
|
||||
using var tooltip = ImRaii.Tooltip();
|
||||
|
||||
var texturePath = GetStringNullTerminated(textureEntry.Path);
|
||||
ImGui.Text($"Base path at {texturePath}:");
|
||||
|
|
@ -308,8 +311,6 @@ internal class UldWidget : IDataWindowWidget
|
|||
ImGui.Text(e.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
ImGui.EndTooltip();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -318,15 +319,14 @@ internal class UldWidget : IDataWindowWidget
|
|||
ImGui.SliderInt("FrameData"u8, ref this.selectedFrameData, 0, timeline.FrameData.Length - 1);
|
||||
var frameData = timeline.FrameData[this.selectedFrameData];
|
||||
ImGui.Text($"FrameInfo: {frameData.StartFrame} -> {frameData.EndFrame}");
|
||||
ImGui.Indent();
|
||||
|
||||
using var indent = ImRaii.PushIndent();
|
||||
foreach (var frameDataKeyGroup in frameData.KeyGroups)
|
||||
{
|
||||
ImGui.Text($"{frameDataKeyGroup.Usage:G} {frameDataKeyGroup.Type:G}");
|
||||
foreach (var keyframe in frameDataKeyGroup.Frames)
|
||||
this.DrawTimelineKeyGroupFrame(keyframe);
|
||||
}
|
||||
|
||||
ImGui.Unindent();
|
||||
}
|
||||
|
||||
private void DrawTimelineKeyGroupFrame(IKeyframe frame)
|
||||
|
|
@ -334,8 +334,7 @@ internal class UldWidget : IDataWindowWidget
|
|||
switch (frame)
|
||||
{
|
||||
case BaseKeyframeData baseKeyframeData:
|
||||
ImGui.Text(
|
||||
$"Time: {baseKeyframeData.Time} | Interpolation: {baseKeyframeData.Interpolation} | Acceleration: {baseKeyframeData.Acceleration} | Deceleration: {baseKeyframeData.Deceleration}");
|
||||
ImGui.Text($"Time: {baseKeyframeData.Time} | Interpolation: {baseKeyframeData.Interpolation} | Acceleration: {baseKeyframeData.Acceleration} | Deceleration: {baseKeyframeData.Deceleration}");
|
||||
break;
|
||||
case Float1Keyframe float1Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(float1Keyframe.Keyframe);
|
||||
|
|
@ -350,8 +349,7 @@ internal class UldWidget : IDataWindowWidget
|
|||
case Float3Keyframe float3Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(float3Keyframe.Keyframe);
|
||||
ImGui.SameLine(0, 0);
|
||||
ImGui.Text(
|
||||
$" | Value1: {float3Keyframe.Value[0]} | Value2: {float3Keyframe.Value[1]} | Value3: {float3Keyframe.Value[2]}");
|
||||
ImGui.Text($" | Value1: {float3Keyframe.Value[0]} | Value2: {float3Keyframe.Value[1]} | Value3: {float3Keyframe.Value[2]}");
|
||||
break;
|
||||
case SByte1Keyframe sbyte1Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(sbyte1Keyframe.Keyframe);
|
||||
|
|
@ -366,8 +364,7 @@ internal class UldWidget : IDataWindowWidget
|
|||
case SByte3Keyframe sbyte3Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(sbyte3Keyframe.Keyframe);
|
||||
ImGui.SameLine(0, 0);
|
||||
ImGui.Text(
|
||||
$" | Value1: {sbyte3Keyframe.Value[0]} | Value2: {sbyte3Keyframe.Value[1]} | Value3: {sbyte3Keyframe.Value[2]}");
|
||||
ImGui.Text($" | Value1: {sbyte3Keyframe.Value[0]} | Value2: {sbyte3Keyframe.Value[1]} | Value3: {sbyte3Keyframe.Value[2]}");
|
||||
break;
|
||||
case Byte1Keyframe byte1Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(byte1Keyframe.Keyframe);
|
||||
|
|
@ -382,8 +379,7 @@ internal class UldWidget : IDataWindowWidget
|
|||
case Byte3Keyframe byte3Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(byte3Keyframe.Keyframe);
|
||||
ImGui.SameLine(0, 0);
|
||||
ImGui.Text(
|
||||
$" | Value1: {byte3Keyframe.Value[0]} | Value2: {byte3Keyframe.Value[1]} | Value3: {byte3Keyframe.Value[2]}");
|
||||
ImGui.Text($" | Value1: {byte3Keyframe.Value[0]} | Value2: {byte3Keyframe.Value[1]} | Value3: {byte3Keyframe.Value[2]}");
|
||||
break;
|
||||
case Short1Keyframe short1Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(short1Keyframe.Keyframe);
|
||||
|
|
@ -398,8 +394,7 @@ internal class UldWidget : IDataWindowWidget
|
|||
case Short3Keyframe short3Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(short3Keyframe.Keyframe);
|
||||
ImGui.SameLine(0, 0);
|
||||
ImGui.Text(
|
||||
$" | Value1: {short3Keyframe.Value[0]} | Value2: {short3Keyframe.Value[1]} | Value3: {short3Keyframe.Value[2]}");
|
||||
ImGui.Text($" | Value1: {short3Keyframe.Value[0]} | Value2: {short3Keyframe.Value[1]} | Value3: {short3Keyframe.Value[2]}");
|
||||
break;
|
||||
case UShort1Keyframe ushort1Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(ushort1Keyframe.Keyframe);
|
||||
|
|
@ -414,8 +409,7 @@ internal class UldWidget : IDataWindowWidget
|
|||
case UShort3Keyframe ushort3Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(ushort3Keyframe.Keyframe);
|
||||
ImGui.SameLine(0, 0);
|
||||
ImGui.Text(
|
||||
$" | Value1: {ushort3Keyframe.Value[0]} | Value2: {ushort3Keyframe.Value[1]} | Value3: {ushort3Keyframe.Value[2]}");
|
||||
ImGui.Text($" | Value1: {ushort3Keyframe.Value[0]} | Value2: {ushort3Keyframe.Value[1]} | Value3: {ushort3Keyframe.Value[2]}");
|
||||
break;
|
||||
case Int1Keyframe int1Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(int1Keyframe.Keyframe);
|
||||
|
|
@ -430,8 +424,7 @@ internal class UldWidget : IDataWindowWidget
|
|||
case Int3Keyframe int3Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(int3Keyframe.Keyframe);
|
||||
ImGui.SameLine(0, 0);
|
||||
ImGui.Text(
|
||||
$" | Value1: {int3Keyframe.Value[0]} | Value2: {int3Keyframe.Value[1]} | Value3: {int3Keyframe.Value[2]}");
|
||||
ImGui.Text($" | Value1: {int3Keyframe.Value[0]} | Value2: {int3Keyframe.Value[1]} | Value3: {int3Keyframe.Value[2]}");
|
||||
break;
|
||||
case UInt1Keyframe uint1Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(uint1Keyframe.Keyframe);
|
||||
|
|
@ -446,8 +439,7 @@ internal class UldWidget : IDataWindowWidget
|
|||
case UInt3Keyframe uint3Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(uint3Keyframe.Keyframe);
|
||||
ImGui.SameLine(0, 0);
|
||||
ImGui.Text(
|
||||
$" | Value1: {uint3Keyframe.Value[0]} | Value2: {uint3Keyframe.Value[1]} | Value3: {uint3Keyframe.Value[2]}");
|
||||
ImGui.Text($" | Value1: {uint3Keyframe.Value[0]} | Value2: {uint3Keyframe.Value[1]} | Value3: {uint3Keyframe.Value[2]}");
|
||||
break;
|
||||
case Bool1Keyframe bool1Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(bool1Keyframe.Keyframe);
|
||||
|
|
@ -462,28 +454,22 @@ internal class UldWidget : IDataWindowWidget
|
|||
case Bool3Keyframe bool3Keyframe:
|
||||
this.DrawTimelineKeyGroupFrame(bool3Keyframe.Keyframe);
|
||||
ImGui.SameLine(0, 0);
|
||||
ImGui.Text(
|
||||
$" | Value1: {bool3Keyframe.Value[0]} | Value2: {bool3Keyframe.Value[1]} | Value3: {bool3Keyframe.Value[2]}");
|
||||
ImGui.Text($" | Value1: {bool3Keyframe.Value[0]} | Value2: {bool3Keyframe.Value[1]} | Value3: {bool3Keyframe.Value[2]}");
|
||||
break;
|
||||
case ColorKeyframe colorKeyframe:
|
||||
this.DrawTimelineKeyGroupFrame(colorKeyframe.Keyframe);
|
||||
ImGui.SameLine(0, 0);
|
||||
ImGui.Text(
|
||||
$" | Add: {colorKeyframe.AddRed} {colorKeyframe.AddGreen} {colorKeyframe.AddBlue} | Multiply: {colorKeyframe.MultiplyRed} {colorKeyframe.MultiplyGreen} {colorKeyframe.MultiplyBlue}");
|
||||
ImGui.Text($" | Add: {colorKeyframe.AddRed} {colorKeyframe.AddGreen} {colorKeyframe.AddBlue} | Multiply: {colorKeyframe.MultiplyRed} {colorKeyframe.MultiplyGreen} {colorKeyframe.MultiplyBlue}");
|
||||
break;
|
||||
case LabelKeyframe labelKeyframe:
|
||||
this.DrawTimelineKeyGroupFrame(labelKeyframe.Keyframe);
|
||||
ImGui.SameLine(0, 0);
|
||||
ImGui.Text(
|
||||
$" | LabelCommand: {labelKeyframe.LabelCommand} | JumpId: {labelKeyframe.JumpId} | LabelId: {labelKeyframe.LabelId}");
|
||||
ImGui.Text($" | LabelCommand: {labelKeyframe.LabelCommand} | JumpId: {labelKeyframe.JumpId} | LabelId: {labelKeyframe.LabelId}");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawParts(
|
||||
UldRoot.PartsData partsData,
|
||||
UldRoot.TextureEntry[] textureEntries,
|
||||
TextureManager textureManager)
|
||||
private void DrawParts(UldRoot.PartsData partsData, UldRoot.TextureEntry[] textureEntries, TextureManager textureManager)
|
||||
{
|
||||
for (var index = 0; index < partsData.Parts.Length; index++)
|
||||
{
|
||||
|
|
@ -549,10 +535,9 @@ internal class UldWidget : IDataWindowWidget
|
|||
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
ImGui.BeginTooltip();
|
||||
using var tooltip = ImRaii.Tooltip();
|
||||
ImGui.Text("Click to copy:"u8);
|
||||
ImGui.Text(texturePath);
|
||||
ImGui.EndTooltip();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue