mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-15 05:04:15 +01:00
Resource Tree: Make skp child of sklb
This commit is contained in:
parent
30c622c085
commit
a17a1e9576
3 changed files with 17 additions and 8 deletions
|
|
@ -283,12 +283,17 @@ internal record class ResolveContext(Configuration Config, IObjectIdentifier Ide
|
|||
|
||||
var node = CreateNodeFromResourceHandle(ResourceType.Sklb, (nint)sklb, (ResourceHandle*)sklb->SkeletonResourceHandle, false, WithUIData);
|
||||
if (node != null)
|
||||
{
|
||||
var skpNode = CreateParameterNodeFromPartialSkeleton(sklb);
|
||||
if (skpNode != null)
|
||||
node.Children.Add(skpNode);
|
||||
Nodes.Add((nint)sklb->SkeletonResourceHandle, node);
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
public unsafe ResourceNode? CreateParameterNodeFromPartialSkeleton(FFXIVClientStructs.FFXIV.Client.Graphics.Render.PartialSkeleton* sklb)
|
||||
private unsafe ResourceNode? CreateParameterNodeFromPartialSkeleton(FFXIVClientStructs.FFXIV.Client.Graphics.Render.PartialSkeleton* sklb)
|
||||
{
|
||||
if (sklb->SkeletonParameterResourceHandle == null)
|
||||
return null;
|
||||
|
|
@ -298,7 +303,11 @@ internal record class ResolveContext(Configuration Config, IObjectIdentifier Ide
|
|||
|
||||
var node = CreateNodeFromResourceHandle(ResourceType.Skp, (nint)sklb, (ResourceHandle*)sklb->SkeletonParameterResourceHandle, true, WithUIData);
|
||||
if (node != null)
|
||||
{
|
||||
if (WithUIData)
|
||||
node = node.WithUIData("Skeleton Parameters", node.Icon);
|
||||
Nodes.Add((nint)sklb->SkeletonParameterResourceHandle, node);
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -134,10 +134,6 @@ public class ResourceTree
|
|||
var sklbNode = context.CreateNodeFromPartialSkeleton(&skeleton->PartialSkeletons[i]);
|
||||
if (sklbNode != null)
|
||||
nodes.Add(context.WithUIData ? sklbNode.WithUIData($"{prefix}Skeleton #{i}", sklbNode.Icon) : sklbNode);
|
||||
|
||||
var skpNode = context.CreateParameterNodeFromPartialSkeleton(&skeleton->PartialSkeletons[i]);
|
||||
if (skpNode != null)
|
||||
nodes.Add(context.WithUIData ? skpNode.WithUIData($"{prefix}Skeleton #{i} Parameters", skpNode.Icon) : skpNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ using OtterGui.Raii;
|
|||
using OtterGui;
|
||||
using Penumbra.Interop.ResourceTree;
|
||||
using Penumbra.UI.Classes;
|
||||
using System.Linq;
|
||||
|
||||
namespace Penumbra.UI.AdvancedWindow;
|
||||
|
||||
|
|
@ -125,7 +126,10 @@ public class ResourceTreeViewer
|
|||
var unfolded = _unfolded.Contains(nodePathHash);
|
||||
using (var indent = ImRaii.PushIndent(level))
|
||||
{
|
||||
if (resourceNode.Children.Count > 0)
|
||||
var unfoldable = debugMode
|
||||
? resourceNode.Children.Count > 0
|
||||
: resourceNode.Children.Any(child => !child.Internal);
|
||||
if (unfoldable)
|
||||
{
|
||||
using var font = ImRaii.PushFont(UiBuilder.IconFont);
|
||||
var icon = (unfolded ? FontAwesomeIcon.CaretDown : FontAwesomeIcon.CaretRight).ToIconString();
|
||||
|
|
@ -142,7 +146,7 @@ public class ResourceTreeViewer
|
|||
_changedItemDrawer.DrawCategoryIcon(resourceNode.Icon);
|
||||
ImGui.SameLine(0f, ImGui.GetStyle().ItemInnerSpacing.X);
|
||||
ImGui.TableHeader(resourceNode.Name);
|
||||
if (ImGui.IsItemClicked() && resourceNode.Children.Count > 0)
|
||||
if (ImGui.IsItemClicked() && unfoldable)
|
||||
{
|
||||
if (unfolded)
|
||||
_unfolded.Remove(nodePathHash);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue