Switch-Toolbox/File_Format_Library/GUI/GFBMDL/GFLXMaterialParamEditor.cs
2019-11-26 16:29:13 -05:00

95 lines
3.1 KiB
C#

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;
using Toolbox.Library;
using Toolbox.Library.IO;
namespace FirstPlugin.Forms
{
public partial class GFLXMaterialParamEditor : UserControl
{
private GFLXMaterialData ActiveMaterial;
public GFLXMaterialParamEditor()
{
InitializeComponent();
stDropDownPanel1.ResetColors();
stDropDownPanel2.ResetColors();
stDropDownPanel3.ResetColors();
}
public void LoadParams(GFLXMaterialData mat) {
ActiveMaterial = mat;
ReloadParams();
}
private void ReloadParams()
{
switchParamCB.Items.Clear();
valueParamCB.Items.Clear();
colorParamCB.Items.Clear();
foreach (var param in ActiveMaterial.SwitchParams.Values) {
switchParamCB.Items.Add($"{param.Name} {param.Value}");
}
foreach (var param in ActiveMaterial.ValueParams.Values) {
valueParamCB.Items.Add($"{param.Name} {param.Value}");
}
foreach (var param in ActiveMaterial.ColorParams.Values) {
colorParamCB.Items.Add($"{param.Name} {param.Value}");
}
if (switchParamCB.Items.Count > 0) switchParamCB.SelectedIndex = 0;
if (valueParamCB.Items.Count > 0) valueParamCB.SelectedIndex = 0;
if (colorParamCB.Items.Count > 0) colorParamCB.SelectedIndex = 0;
}
private void switchParamCB_SelectedIndexChanged(object sender, EventArgs e)
{
int index = switchParamCB.SelectedIndex;
if (index >= 0)
{
var param = ActiveMaterial.SwitchParams.ElementAtOrDefault(index).Value;
stCheckBox1.Checked = param.Value;
}
}
private void valueParamCB_SelectedIndexChanged(object sender, EventArgs e)
{
int index = valueParamCB.SelectedIndex;
if (index >= 0)
{
var param = ActiveMaterial.ValueParams.ElementAtOrDefault(index).Value;
barSlider1.Value = param.Value;
}
}
private void colorParamCB_SelectedIndexChanged(object sender, EventArgs e)
{
int index = colorParamCB.SelectedIndex;
if (index >= 0)
{
var param = ActiveMaterial.ColorParams.ElementAtOrDefault(index).Value;
barSlider2.Value = param.Value.X;
barSlider3.Value = param.Value.X;
barSlider4.Value = param.Value.X;
pictureBox1.BackColor = Color.FromArgb(
Utils.FloatToIntClamp(param.Value.X),
Utils.FloatToIntClamp(param.Value.Y),
Utils.FloatToIntClamp(param.Value.Z));
}
else
pictureBox1.BackColor = Color.White;
}
}
}