131 lines
5.4 KiB
C#
131 lines
5.4 KiB
C#
|
using System;
|
|||
|
using Switch_Toolbox.Library.Forms;
|
|||
|
using Bfres.Structs;
|
|||
|
using Syroot.NintenTools.NSW.Bfres.GFX;
|
|||
|
using System.Linq;
|
|||
|
|
|||
|
|
|||
|
namespace FirstPlugin.Forms
|
|||
|
{
|
|||
|
public partial class VertexBufferCreator : STForm
|
|||
|
{
|
|||
|
public VertexBufferCreator()
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
|
|||
|
CanResize = false;
|
|||
|
}
|
|||
|
|
|||
|
public FSHP.VertexAttribute activeAttribute;
|
|||
|
|
|||
|
public void LoadAttribute(FSHP.VertexAttribute attribute)
|
|||
|
{
|
|||
|
activeAttribute = attribute;
|
|||
|
|
|||
|
SetFormat(attribute);
|
|||
|
|
|||
|
nameTB.Text = attribute.Name;
|
|||
|
|
|||
|
bool HasFormat = formatCB.Items.Contains(attribute.Format);
|
|||
|
|
|||
|
if (!HasFormat)
|
|||
|
{
|
|||
|
formatCB.Items.Add(attribute.Format);
|
|||
|
}
|
|||
|
|
|||
|
formatCB.SelectedItem = attribute.Format;
|
|||
|
}
|
|||
|
|
|||
|
private void SetFormat(FSHP.VertexAttribute attribute)
|
|||
|
{
|
|||
|
formatCB.Items.Clear();
|
|||
|
|
|||
|
var index = string.Concat(attribute.Name.ToArray().Reverse().TakeWhile(char.IsNumber).Reverse());
|
|||
|
|
|||
|
if (attribute.Name == $"_p{index}")
|
|||
|
{
|
|||
|
formatCB.Items.Add(AttribFormat.Format_32_32_32_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_16_16_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_16_16_SNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_10_10_10_2_SNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_8_8_8_8_SNorm);
|
|||
|
}
|
|||
|
if (attribute.Name == $"_n{index}")
|
|||
|
{
|
|||
|
formatCB.Items.Add(AttribFormat.Format_32_32_32_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_16_16_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_16_16_SNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_10_10_10_2_SNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_8_8_8_8_SNorm);
|
|||
|
}
|
|||
|
if (attribute.Name == $"_i{index}")
|
|||
|
{
|
|||
|
formatCB.Items.Add(AttribFormat.Format_32_32_32_32_UInt);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_16_16_UInt);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_8_8_8_8_UInt);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_32_32_32_UInt);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_32_32_UInt);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_UInt);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_8_8_UInt);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_32_UInt);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_UInt);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_8_UInt);
|
|||
|
}
|
|||
|
if (attribute.Name == $"_w{index}")
|
|||
|
{
|
|||
|
formatCB.Items.Add(AttribFormat.Format_32_32_32_32_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_16_16_UNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_8_8_8_8_UNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_32_32_32_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_32_32_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_UNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_8_8_UNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_8_UNorm);
|
|||
|
}
|
|||
|
if (attribute.Name == $"_t{index}")
|
|||
|
{
|
|||
|
formatCB.Items.Add(AttribFormat.Format_32_32_32_32_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_16_16_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_16_16_SNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_10_10_10_2_SNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_8_8_8_8_SNorm);
|
|||
|
}
|
|||
|
if (attribute.Name == $"_b{index}")
|
|||
|
{
|
|||
|
formatCB.Items.Add(AttribFormat.Format_32_32_32_32_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_16_16_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_16_16_SNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_10_10_10_2_SNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_8_8_8_8_SNorm);
|
|||
|
}
|
|||
|
if (attribute.Name == $"_u{index}")
|
|||
|
{
|
|||
|
formatCB.Items.Add(AttribFormat.Format_32_32_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_SNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_8_8_SNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_8_8_UNorm);
|
|||
|
}
|
|||
|
if (attribute.Name == $"_c{index}")
|
|||
|
{
|
|||
|
formatCB.Items.Add(AttribFormat.Format_32_32_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_Single);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_16_16_SNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_10_10_10_2_SNorm);
|
|||
|
formatCB.Items.Add(AttribFormat.Format_8_8_SNorm);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void nameTB_TextChanged(object sender, EventArgs e)
|
|||
|
{
|
|||
|
activeAttribute.Name = nameTB.Text;
|
|||
|
}
|
|||
|
|
|||
|
private void formatCB_SelectedIndexChanged(object sender, EventArgs e)
|
|||
|
{
|
|||
|
activeAttribute.Format = (AttribFormat)formatCB.SelectedItem;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|