1
0
mirror of synced 2024-12-04 20:08:00 +01:00
Switch-Toolbox/File_Format_Library/GUI/GFBMDL/GFLXMeshEditor.cs

77 lines
2.2 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace FirstPlugin.Forms
{
public partial class GFLXMeshEditor : UserControl
{
private bool Loaded = false;
private GFLXMesh ActiveMesh;
public GFLXMeshEditor()
{
InitializeComponent();
stDropDownPanel1.ResetColors();
}
public void LoadMesh(GFLXMesh mesh)
{
polyGroupCB.Items.Clear();
materialCB.Items.Clear();
ActiveMesh = mesh;
Loaded = false;
var materials = mesh.ParentModel.GenericMaterials;
for (int i = 0; i < materials.Count; i++)
materialCB.Items.Add(materials[i].Text);
for (int i = 0; i < mesh.PolygonGroups.Count; i++) {
polyGroupCB.Items.Add($"{i}");
}
polyGroupCB.SelectedIndex = 0;
Loaded = true;
}
private void polyGroupCB_SelectedIndexChanged(object sender, EventArgs e)
{
int index = polyGroupCB.SelectedIndex;
if (index >= 0)
{
var poly = ActiveMesh.PolygonGroups[index];
var mat = ActiveMesh.ParentModel.GenericMaterials[poly.MaterialIndex];
materialCB.SelectedItem = mat.Text;
}
}
private void materialCB_SelectedIndexChanged(object sender, EventArgs e) {
if (!Loaded) return;
int index = polyGroupCB.SelectedIndex;
if (index >= 0)
{
var poly = ActiveMesh.PolygonGroups[index];
var materials = ActiveMesh.ParentModel.GenericMaterials;
var mappedMat = materials.First(x => x.Text == materialCB.GetSelectedText());
if (mappedMat != null) {
var matIndex = materials.IndexOf(mappedMat);
poly.MaterialIndex = matIndex;
ActiveMesh.MeshData.Polygons[index].MaterialIndex = (uint)matIndex;
Toolbox.Library.LibraryGUI.UpdateViewport();
}
}
}
}
}