Add mesh vertex element readout

This commit is contained in:
ackwell 2024-04-26 21:23:31 +10:00
parent c1472d5f65
commit 616db0dcc3
2 changed files with 43 additions and 2 deletions

View file

@ -1,5 +1,4 @@
using System.Collections.Immutable; using System.Collections.Immutable;
using Lumina.Data.Parsing;
using Lumina.Extensions; using Lumina.Extensions;
using OtterGui; using OtterGui;
using Penumbra.GameData.Files; using Penumbra.GameData.Files;

View file

@ -1,6 +1,7 @@
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Interface.Components; using Dalamud.Interface.Components;
using ImGuiNET; using ImGuiNET;
using Lumina.Data.Parsing;
using OtterGui; using OtterGui;
using OtterGui.Custom; using OtterGui.Custom;
using OtterGui.Raii; using OtterGui.Raii;
@ -8,7 +9,6 @@ using OtterGui.Widgets;
using Penumbra.GameData; using Penumbra.GameData;
using Penumbra.GameData.Files; using Penumbra.GameData.Files;
using Penumbra.Import.Models; using Penumbra.Import.Models;
using Penumbra.Mods;
using Penumbra.String.Classes; using Penumbra.String.Classes;
using Penumbra.UI.Classes; using Penumbra.UI.Classes;
@ -421,6 +421,14 @@ public partial class ModEditWindow
var file = tab.Mdl; var file = tab.Mdl;
var mesh = file.Meshes[meshIndex]; var mesh = file.Meshes[meshIndex];
// Vertex elements
ImGui.TableNextColumn();
ImGui.AlignTextToFramePadding();
ImGui.TextUnformatted("Vertex Elements");
ImGui.TableNextColumn();
DrawVertexElementDetails(file.VertexDeclarations[meshIndex].VertexElements);
// Mesh material // Mesh material
ImGui.TableNextColumn(); ImGui.TableNextColumn();
ImGui.AlignTextToFramePadding(); ImGui.AlignTextToFramePadding();
@ -436,6 +444,40 @@ public partial class ModEditWindow
return ret; return ret;
} }
private static void DrawVertexElementDetails(MdlStructs.VertexElement[] vertexElements)
{
using var node = ImRaii.TreeNode($"Click to expand");
if (!node)
return;
var flags = ImGuiTableFlags.SizingFixedFit
| ImGuiTableFlags.RowBg
| ImGuiTableFlags.Borders
| ImGuiTableFlags.NoHostExtendX;
using var table = ImRaii.Table(string.Empty, 4, flags);
if (!table)
return;
ImGui.TableSetupColumn("Usage");
ImGui.TableSetupColumn("Type");
ImGui.TableSetupColumn("Stream");
ImGui.TableSetupColumn("Offset");
ImGui.TableHeadersRow();
foreach (var element in vertexElements)
{
ImGui.TableNextColumn();
ImGui.TextUnformatted($"{(MdlFile.VertexUsage)element.Usage}");
ImGui.TableNextColumn();
ImGui.TextUnformatted($"{(MdlFile.VertexType)element.Type}");
ImGui.TableNextColumn();
ImGui.TextUnformatted($"{element.Stream}");
ImGui.TableNextColumn();
ImGui.TextUnformatted($"{element.Offset}");
}
}
private static bool DrawMaterialCombo(MdlTab tab, int meshIndex, bool disabled) private static bool DrawMaterialCombo(MdlTab tab, int meshIndex, bool disabled)
{ {
var mesh = tab.Mdl.Meshes[meshIndex]; var mesh = tab.Mdl.Meshes[meshIndex];