Merge branch 'master' into dtme

# Conflicts:
#	Penumbra/UI/AdvancedWindow/ModEditWindow.Materials.ColorTable.cs
#	Penumbra/UI/AdvancedWindow/ModEditWindow.Materials.MtrlTab.cs
This commit is contained in:
Ottermandias 2024-08-04 15:36:17 +02:00
commit 30d10d5a26
44 changed files with 1740 additions and 443 deletions

View file

@ -26,7 +26,7 @@ public class ResourceTreeViewer
private readonly Dictionary<nint, NodeVisibility> _filterCache;
private TreeCategory _categoryFilter;
private ChangedItemDrawer.ChangedItemIcon _typeFilter;
private ChangedItemIconFlag _typeFilter;
private string _nameFilter;
private string _nodeFilter;
@ -47,7 +47,7 @@ public class ResourceTreeViewer
_filterCache = [];
_categoryFilter = AllCategories;
_typeFilter = ChangedItemDrawer.AllFlags;
_typeFilter = ChangedItemFlagExtensions.AllFlags;
_nameFilter = string.Empty;
_nodeFilter = string.Empty;
}
@ -184,13 +184,13 @@ public class ResourceTreeViewer
});
private void DrawNodes(IEnumerable<ResourceNode> resourceNodes, int level, nint pathHash,
ChangedItemDrawer.ChangedItemIcon parentFilterIcon)
ChangedItemIconFlag parentFilterIconFlag)
{
var debugMode = _config.DebugMode;
var frameHeight = ImGui.GetFrameHeight();
var cellHeight = _actionCapacity > 0 ? frameHeight : 0.0f;
bool MatchesFilter(ResourceNode node, ChangedItemDrawer.ChangedItemIcon filterIcon)
bool MatchesFilter(ResourceNode node, ChangedItemIconFlag filterIcon)
{
if (!_typeFilter.HasFlag(filterIcon))
return false;
@ -204,12 +204,12 @@ public class ResourceTreeViewer
|| Array.Exists(node.PossibleGamePaths, path => path.Path.ToString().Contains(_nodeFilter, StringComparison.OrdinalIgnoreCase));
}
NodeVisibility CalculateNodeVisibility(nint nodePathHash, ResourceNode node, ChangedItemDrawer.ChangedItemIcon parentFilterIcon)
NodeVisibility CalculateNodeVisibility(nint nodePathHash, ResourceNode node, ChangedItemIconFlag parentFilterIcon)
{
if (node.Internal && !debugMode)
return NodeVisibility.Hidden;
var filterIcon = node.Icon != 0 ? node.Icon : parentFilterIcon;
var filterIcon = node.IconFlag != 0 ? node.IconFlag : parentFilterIcon;
if (MatchesFilter(node, filterIcon))
return NodeVisibility.Visible;
@ -222,7 +222,7 @@ public class ResourceTreeViewer
return NodeVisibility.Hidden;
}
NodeVisibility GetNodeVisibility(nint nodePathHash, ResourceNode node, ChangedItemDrawer.ChangedItemIcon parentFilterIcon)
NodeVisibility GetNodeVisibility(nint nodePathHash, ResourceNode node, ChangedItemIconFlag parentFilterIcon)
{
if (!_filterCache.TryGetValue(nodePathHash, out var visibility))
{
@ -240,13 +240,13 @@ public class ResourceTreeViewer
{
var nodePathHash = unchecked(pathHash + resourceNode.ResourceHandle);
var visibility = GetNodeVisibility(nodePathHash, resourceNode, parentFilterIcon);
var visibility = GetNodeVisibility(nodePathHash, resourceNode, parentFilterIconFlag);
if (visibility == NodeVisibility.Hidden)
continue;
using var mutedColor = ImRaii.PushColor(ImGuiCol.Text, ImGuiUtil.HalfTransparentText(), resourceNode.Internal);
var filterIcon = resourceNode.Icon != 0 ? resourceNode.Icon : parentFilterIcon;
var filterIcon = resourceNode.IconFlag != 0 ? resourceNode.IconFlag : parentFilterIconFlag;
using var id = ImRaii.PushId(index);
ImGui.TableNextColumn();
@ -277,7 +277,7 @@ public class ResourceTreeViewer
ImGui.SameLine(0f, ImGui.GetStyle().ItemInnerSpacing.X);
}
_changedItemDrawer.DrawCategoryIcon(resourceNode.Icon);
_changedItemDrawer.DrawCategoryIcon(resourceNode.IconFlag);
ImGui.SameLine(0f, ImGui.GetStyle().ItemInnerSpacing.X);
ImGui.TableHeader(resourceNode.Name);
if (ImGui.IsItemClicked() && unfoldable)