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);
|
var node = CreateNodeFromResourceHandle(ResourceType.Sklb, (nint)sklb, (ResourceHandle*)sklb->SkeletonResourceHandle, false, WithUIData);
|
||||||
if (node != null)
|
if (node != null)
|
||||||
|
{
|
||||||
|
var skpNode = CreateParameterNodeFromPartialSkeleton(sklb);
|
||||||
|
if (skpNode != null)
|
||||||
|
node.Children.Add(skpNode);
|
||||||
Nodes.Add((nint)sklb->SkeletonResourceHandle, node);
|
Nodes.Add((nint)sklb->SkeletonResourceHandle, node);
|
||||||
|
}
|
||||||
|
|
||||||
return 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)
|
if (sklb->SkeletonParameterResourceHandle == null)
|
||||||
return 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);
|
var node = CreateNodeFromResourceHandle(ResourceType.Skp, (nint)sklb, (ResourceHandle*)sklb->SkeletonParameterResourceHandle, true, WithUIData);
|
||||||
if (node != null)
|
if (node != null)
|
||||||
|
{
|
||||||
|
if (WithUIData)
|
||||||
|
node = node.WithUIData("Skeleton Parameters", node.Icon);
|
||||||
Nodes.Add((nint)sklb->SkeletonParameterResourceHandle, node);
|
Nodes.Add((nint)sklb->SkeletonParameterResourceHandle, node);
|
||||||
|
}
|
||||||
|
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -134,10 +134,6 @@ public class ResourceTree
|
||||||
var sklbNode = context.CreateNodeFromPartialSkeleton(&skeleton->PartialSkeletons[i]);
|
var sklbNode = context.CreateNodeFromPartialSkeleton(&skeleton->PartialSkeletons[i]);
|
||||||
if (sklbNode != null)
|
if (sklbNode != null)
|
||||||
nodes.Add(context.WithUIData ? sklbNode.WithUIData($"{prefix}Skeleton #{i}", sklbNode.Icon) : sklbNode);
|
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,7 +8,8 @@ using OtterGui.Raii;
|
||||||
using OtterGui;
|
using OtterGui;
|
||||||
using Penumbra.Interop.ResourceTree;
|
using Penumbra.Interop.ResourceTree;
|
||||||
using Penumbra.UI.Classes;
|
using Penumbra.UI.Classes;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace Penumbra.UI.AdvancedWindow;
|
namespace Penumbra.UI.AdvancedWindow;
|
||||||
|
|
||||||
public class ResourceTreeViewer
|
public class ResourceTreeViewer
|
||||||
|
|
@ -125,7 +126,10 @@ public class ResourceTreeViewer
|
||||||
var unfolded = _unfolded.Contains(nodePathHash);
|
var unfolded = _unfolded.Contains(nodePathHash);
|
||||||
using (var indent = ImRaii.PushIndent(level))
|
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);
|
using var font = ImRaii.PushFont(UiBuilder.IconFont);
|
||||||
var icon = (unfolded ? FontAwesomeIcon.CaretDown : FontAwesomeIcon.CaretRight).ToIconString();
|
var icon = (unfolded ? FontAwesomeIcon.CaretDown : FontAwesomeIcon.CaretRight).ToIconString();
|
||||||
|
|
@ -142,7 +146,7 @@ public class ResourceTreeViewer
|
||||||
_changedItemDrawer.DrawCategoryIcon(resourceNode.Icon);
|
_changedItemDrawer.DrawCategoryIcon(resourceNode.Icon);
|
||||||
ImGui.SameLine(0f, ImGui.GetStyle().ItemInnerSpacing.X);
|
ImGui.SameLine(0f, ImGui.GetStyle().ItemInnerSpacing.X);
|
||||||
ImGui.TableHeader(resourceNode.Name);
|
ImGui.TableHeader(resourceNode.Name);
|
||||||
if (ImGui.IsItemClicked() && resourceNode.Children.Count > 0)
|
if (ImGui.IsItemClicked() && unfoldable)
|
||||||
{
|
{
|
||||||
if (unfolded)
|
if (unfolded)
|
||||||
_unfolded.Remove(nodePathHash);
|
_unfolded.Remove(nodePathHash);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue