Add debug panel to check changed item identification for paths.

This commit is contained in:
Ottermandias 2025-01-07 16:11:05 +01:00
parent af7a8fbddd
commit 9a457a1a95

View file

@ -36,6 +36,7 @@ using static OtterGui.Raii.ImRaii;
using CharacterBase = FFXIVClientStructs.FFXIV.Client.Graphics.Scene.CharacterBase; using CharacterBase = FFXIVClientStructs.FFXIV.Client.Graphics.Scene.CharacterBase;
using ImGuiClip = OtterGui.ImGuiClip; using ImGuiClip = OtterGui.ImGuiClip;
using Penumbra.Api.IpcTester; using Penumbra.Api.IpcTester;
using Penumbra.GameData.Data;
using Penumbra.Interop.Hooks.PostProcessing; using Penumbra.Interop.Hooks.PostProcessing;
using Penumbra.Interop.Hooks.ResourceLoading; using Penumbra.Interop.Hooks.ResourceLoading;
using Penumbra.GameData.Files.StainMapStructs; using Penumbra.GameData.Files.StainMapStructs;
@ -102,6 +103,7 @@ public class DebugTab : Window, ITab, IUiService
private readonly HookOverrideDrawer _hookOverrides; private readonly HookOverrideDrawer _hookOverrides;
private readonly RsfService _rsfService; private readonly RsfService _rsfService;
private readonly SchedulerResourceManagementService _schedulerService; private readonly SchedulerResourceManagementService _schedulerService;
private readonly ObjectIdentification _objectIdentification;
public DebugTab(PerformanceTracker performance, Configuration config, CollectionManager collectionManager, ObjectManager objects, public DebugTab(PerformanceTracker performance, Configuration config, CollectionManager collectionManager, ObjectManager objects,
IClientState clientState, IDataManager dataManager, IClientState clientState, IDataManager dataManager,
@ -112,7 +114,7 @@ public class DebugTab : Window, ITab, IUiService
TextureManager textureManager, ShaderReplacementFixer shaderReplacementFixer, RedrawService redraws, DictEmote emotes, TextureManager textureManager, ShaderReplacementFixer shaderReplacementFixer, RedrawService redraws, DictEmote emotes,
Diagnostics diagnostics, IpcTester ipcTester, CrashHandlerPanel crashHandlerPanel, TexHeaderDrawer texHeaderDrawer, Diagnostics diagnostics, IpcTester ipcTester, CrashHandlerPanel crashHandlerPanel, TexHeaderDrawer texHeaderDrawer,
HookOverrideDrawer hookOverrides, RsfService rsfService, GlobalVariablesDrawer globalVariablesDrawer, HookOverrideDrawer hookOverrides, RsfService rsfService, GlobalVariablesDrawer globalVariablesDrawer,
SchedulerResourceManagementService schedulerService) SchedulerResourceManagementService schedulerService, ObjectIdentification objectIdentification)
: base("Penumbra Debug Window", ImGuiWindowFlags.NoCollapse) : base("Penumbra Debug Window", ImGuiWindowFlags.NoCollapse)
{ {
IsOpen = true; IsOpen = true;
@ -151,6 +153,7 @@ public class DebugTab : Window, ITab, IUiService
_rsfService = rsfService; _rsfService = rsfService;
_globalVariablesDrawer = globalVariablesDrawer; _globalVariablesDrawer = globalVariablesDrawer;
_schedulerService = schedulerService; _schedulerService = schedulerService;
_objectIdentification = objectIdentification;
_objects = objects; _objects = objects;
_clientState = clientState; _clientState = clientState;
_dataManager = dataManager; _dataManager = dataManager;
@ -734,8 +737,37 @@ public class DebugTab : Window, ITab, IUiService
DrawActionTmbs(); DrawActionTmbs();
DrawStainTemplates(); DrawStainTemplates();
DrawAtch(); DrawAtch();
DrawChangedItemTest();
} }
private string _changedItemPath = string.Empty;
private readonly Dictionary<string, IIdentifiedObjectData?> _changedItems = [];
private void DrawChangedItemTest()
{
using var node = TreeNode("Changed Item Test");
if (!node)
return;
if (ImUtf8.InputText("##ChangedItemTest"u8, ref _changedItemPath, "Changed Item File Path..."u8))
{
_changedItems.Clear();
_objectIdentification.Identify(_changedItems, _changedItemPath);
}
if (_changedItems.Count == 0)
return;
using var list = ImUtf8.ListBox("##ChangedItemList"u8,
new Vector2(ImGui.GetContentRegionAvail().X, 8 * ImGui.GetTextLineHeightWithSpacing()));
if (!list)
return;
foreach (var item in _changedItems)
ImUtf8.Selectable(item.Key);
}
private string _emoteSearchFile = string.Empty; private string _emoteSearchFile = string.Empty;
private string _emoteSearchName = string.Empty; private string _emoteSearchName = string.Empty;