mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-06-01 19:04:50 +00:00
Rename generateModel to CustomSkinEditor
This commit is contained in:
@@ -280,7 +280,7 @@ namespace PckStudio.Popups
|
||||
|
||||
skin.SetData(Resources.classic_template, ImageFormat.Png);
|
||||
|
||||
using generateModel generate = new generateModel(skin);
|
||||
using CustomModelEditor generate = new CustomModelEditor(skin);
|
||||
|
||||
if (generate.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
namespace PckStudio.Forms
|
||||
{
|
||||
partial class generateModel
|
||||
partial class CustomModelEditor
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
@@ -29,9 +29,8 @@
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.Windows.Forms.Label label6;
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(generateModel));
|
||||
System.Windows.Forms.Label label5;
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CustomModelEditor));
|
||||
System.Windows.Forms.Label label3;
|
||||
System.Windows.Forms.Label label7;
|
||||
System.Windows.Forms.Label labelTextureMappingPreview;
|
||||
@@ -41,8 +40,7 @@
|
||||
this.cloneToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.changeColorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.buttonDone = new System.Windows.Forms.Button();
|
||||
this.labelView = new System.Windows.Forms.Label();
|
||||
this.buttonDone = new MetroFramework.Controls.MetroButton();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.tabBody = new System.Windows.Forms.TabControl();
|
||||
this.tabArmor = new System.Windows.Forms.TabPage();
|
||||
@@ -56,13 +54,11 @@
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.offsetHead = new System.Windows.Forms.TextBox();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.comboParent = new System.Windows.Forms.ComboBox();
|
||||
this.buttonEXPORT = new System.Windows.Forms.Button();
|
||||
this.buttonIMPORT = new System.Windows.Forms.Button();
|
||||
this.buttonImportModel = new System.Windows.Forms.Button();
|
||||
this.buttonExportModel = new System.Windows.Forms.Button();
|
||||
this.OpenJSONButton = new System.Windows.Forms.Button();
|
||||
this.buttonTemplate = new MetroFramework.Controls.MetroButton();
|
||||
this.buttonEXPORT = new MetroFramework.Controls.MetroButton();
|
||||
this.buttonIMPORT = new MetroFramework.Controls.MetroButton();
|
||||
this.buttonImportModel = new MetroFramework.Controls.MetroButton();
|
||||
this.buttonExportModel = new MetroFramework.Controls.MetroButton();
|
||||
this.OpenJSONButton = new MetroFramework.Controls.MetroButton();
|
||||
this.generateTextureCheckBox = new MetroFramework.Controls.MetroCheckBox();
|
||||
this.checkGuide = new MetroFramework.Controls.MetroCheckBox();
|
||||
this.checkBoxArmor = new MetroFramework.Controls.MetroCheckBox();
|
||||
@@ -74,19 +70,9 @@
|
||||
this.PosZUpDown = new System.Windows.Forms.NumericUpDown();
|
||||
this.PosYUpDown = new System.Windows.Forms.NumericUpDown();
|
||||
this.PosXUpDown = new System.Windows.Forms.NumericUpDown();
|
||||
this.Part = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.X = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.Y = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.Z = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this._Width = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this._Height = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.Length = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.U = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.V = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.listViewBoxes = new System.Windows.Forms.ListView();
|
||||
this.renderer3D1 = new PckStudio.Rendering.SkinRenderer();
|
||||
this.uvPictureBox = new PckStudio.ToolboxItems.InterpolationPictureBox();
|
||||
label6 = new System.Windows.Forms.Label();
|
||||
this.listBox1 = new System.Windows.Forms.ListBox();
|
||||
label5 = new System.Windows.Forms.Label();
|
||||
label3 = new System.Windows.Forms.Label();
|
||||
label7 = new System.Windows.Forms.Label();
|
||||
@@ -107,12 +93,6 @@
|
||||
((System.ComponentModel.ISupportInitialize)(this.uvPictureBox)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label6
|
||||
//
|
||||
resources.ApplyResources(label6, "label6");
|
||||
label6.ForeColor = System.Drawing.Color.White;
|
||||
label6.Name = "label6";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
resources.ApplyResources(label5, "label5");
|
||||
@@ -170,28 +150,22 @@
|
||||
//
|
||||
resources.ApplyResources(this.changeColorToolStripMenuItem, "changeColorToolStripMenuItem");
|
||||
this.changeColorToolStripMenuItem.Name = "changeColorToolStripMenuItem";
|
||||
this.changeColorToolStripMenuItem.Click += new System.EventHandler(this.changeColorToolStripMenuItem_Click);
|
||||
//
|
||||
// buttonDone
|
||||
//
|
||||
this.buttonDone.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
resources.ApplyResources(this.buttonDone, "buttonDone");
|
||||
this.buttonDone.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.buttonDone.ForeColor = System.Drawing.Color.White;
|
||||
this.buttonDone.Name = "buttonDone";
|
||||
this.buttonDone.UseVisualStyleBackColor = true;
|
||||
this.buttonDone.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.buttonDone.UseSelectable = true;
|
||||
this.buttonDone.Click += new System.EventHandler(this.buttonDone_Click);
|
||||
//
|
||||
// labelView
|
||||
//
|
||||
resources.ApplyResources(this.labelView, "labelView");
|
||||
this.labelView.ForeColor = System.Drawing.Color.White;
|
||||
this.labelView.Name = "labelView";
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Controls.Add(this.tabBody);
|
||||
this.groupBox1.ForeColor = System.Drawing.Color.White;
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
@@ -233,7 +207,6 @@
|
||||
//
|
||||
resources.ApplyResources(this.offsetArms, "offsetArms");
|
||||
this.offsetArms.Name = "offsetArms";
|
||||
this.offsetArms.TextChanged += new System.EventHandler(this.offsetHead_TextChanged);
|
||||
//
|
||||
// label14
|
||||
//
|
||||
@@ -245,13 +218,11 @@
|
||||
//
|
||||
resources.ApplyResources(this.offsetBody, "offsetBody");
|
||||
this.offsetBody.Name = "offsetBody";
|
||||
this.offsetBody.TextChanged += new System.EventHandler(this.offsetHead_TextChanged);
|
||||
//
|
||||
// offsetLegs
|
||||
//
|
||||
resources.ApplyResources(this.offsetLegs, "offsetLegs");
|
||||
this.offsetLegs.Name = "offsetLegs";
|
||||
this.offsetLegs.TextChanged += new System.EventHandler(this.offsetHead_TextChanged);
|
||||
//
|
||||
// label10
|
||||
//
|
||||
@@ -269,7 +240,6 @@
|
||||
//
|
||||
resources.ApplyResources(this.offsetHead, "offsetHead");
|
||||
this.offsetHead.Name = "offsetHead";
|
||||
this.offsetHead.TextChanged += new System.EventHandler(this.offsetHead_TextChanged);
|
||||
//
|
||||
// label12
|
||||
//
|
||||
@@ -277,26 +247,13 @@
|
||||
this.label12.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(0)))));
|
||||
this.label12.Name = "label12";
|
||||
//
|
||||
// comboParent
|
||||
//
|
||||
this.comboParent.FormattingEnabled = true;
|
||||
this.comboParent.Items.AddRange(new object[] {
|
||||
resources.GetString("comboParent.Items"),
|
||||
resources.GetString("comboParent.Items1"),
|
||||
resources.GetString("comboParent.Items2"),
|
||||
resources.GetString("comboParent.Items3"),
|
||||
resources.GetString("comboParent.Items4"),
|
||||
resources.GetString("comboParent.Items5")});
|
||||
resources.ApplyResources(this.comboParent, "comboParent");
|
||||
this.comboParent.Name = "comboParent";
|
||||
this.comboParent.SelectedValueChanged += new System.EventHandler(this.comboParent_SelectedIndexChanged);
|
||||
//
|
||||
// buttonEXPORT
|
||||
//
|
||||
resources.ApplyResources(this.buttonEXPORT, "buttonEXPORT");
|
||||
this.buttonEXPORT.ForeColor = System.Drawing.Color.White;
|
||||
this.buttonEXPORT.Name = "buttonEXPORT";
|
||||
this.buttonEXPORT.UseVisualStyleBackColor = true;
|
||||
this.buttonEXPORT.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.buttonEXPORT.UseSelectable = true;
|
||||
this.buttonEXPORT.Click += new System.EventHandler(this.buttonEXPORT_Click);
|
||||
//
|
||||
// buttonIMPORT
|
||||
@@ -304,7 +261,8 @@
|
||||
resources.ApplyResources(this.buttonIMPORT, "buttonIMPORT");
|
||||
this.buttonIMPORT.ForeColor = System.Drawing.Color.White;
|
||||
this.buttonIMPORT.Name = "buttonIMPORT";
|
||||
this.buttonIMPORT.UseVisualStyleBackColor = true;
|
||||
this.buttonIMPORT.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.buttonIMPORT.UseSelectable = true;
|
||||
this.buttonIMPORT.Click += new System.EventHandler(this.buttonIMPORT_Click);
|
||||
//
|
||||
// buttonImportModel
|
||||
@@ -312,7 +270,8 @@
|
||||
resources.ApplyResources(this.buttonImportModel, "buttonImportModel");
|
||||
this.buttonImportModel.ForeColor = System.Drawing.Color.White;
|
||||
this.buttonImportModel.Name = "buttonImportModel";
|
||||
this.buttonImportModel.UseVisualStyleBackColor = true;
|
||||
this.buttonImportModel.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.buttonImportModel.UseSelectable = true;
|
||||
this.buttonImportModel.Click += new System.EventHandler(this.buttonImportModel_Click);
|
||||
//
|
||||
// buttonExportModel
|
||||
@@ -320,7 +279,8 @@
|
||||
resources.ApplyResources(this.buttonExportModel, "buttonExportModel");
|
||||
this.buttonExportModel.ForeColor = System.Drawing.Color.White;
|
||||
this.buttonExportModel.Name = "buttonExportModel";
|
||||
this.buttonExportModel.UseVisualStyleBackColor = true;
|
||||
this.buttonExportModel.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.buttonExportModel.UseSelectable = true;
|
||||
this.buttonExportModel.Click += new System.EventHandler(this.buttonExportModel_Click);
|
||||
//
|
||||
// OpenJSONButton
|
||||
@@ -328,17 +288,10 @@
|
||||
resources.ApplyResources(this.OpenJSONButton, "OpenJSONButton");
|
||||
this.OpenJSONButton.ForeColor = System.Drawing.Color.White;
|
||||
this.OpenJSONButton.Name = "OpenJSONButton";
|
||||
this.OpenJSONButton.UseVisualStyleBackColor = true;
|
||||
this.OpenJSONButton.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.OpenJSONButton.UseSelectable = true;
|
||||
this.OpenJSONButton.Click += new System.EventHandler(this.OpenJSONButton_Click);
|
||||
//
|
||||
// buttonTemplate
|
||||
//
|
||||
resources.ApplyResources(this.buttonTemplate, "buttonTemplate");
|
||||
this.buttonTemplate.Name = "buttonTemplate";
|
||||
this.buttonTemplate.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.buttonTemplate.UseSelectable = true;
|
||||
this.buttonTemplate.Click += new System.EventHandler(this.buttonTemplate_Click);
|
||||
//
|
||||
// generateTextureCheckBox
|
||||
//
|
||||
resources.ApplyResources(this.generateTextureCheckBox, "generateTextureCheckBox");
|
||||
@@ -362,168 +315,96 @@
|
||||
//
|
||||
// SizeXUpDown
|
||||
//
|
||||
resources.ApplyResources(this.SizeXUpDown, "SizeXUpDown");
|
||||
this.SizeXUpDown.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(17)))), ((int)(((byte)(17)))), ((int)(((byte)(17)))));
|
||||
this.SizeXUpDown.DecimalPlaces = 1;
|
||||
this.SizeXUpDown.ForeColor = System.Drawing.SystemColors.Menu;
|
||||
resources.ApplyResources(this.SizeXUpDown, "SizeXUpDown");
|
||||
this.SizeXUpDown.Name = "SizeXUpDown";
|
||||
this.SizeXUpDown.ValueChanged += new System.EventHandler(this.SizeXUpDown_ValueChanged);
|
||||
//
|
||||
// SizeYUpDown
|
||||
//
|
||||
resources.ApplyResources(this.SizeYUpDown, "SizeYUpDown");
|
||||
this.SizeYUpDown.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(17)))), ((int)(((byte)(17)))), ((int)(((byte)(17)))));
|
||||
this.SizeYUpDown.DecimalPlaces = 1;
|
||||
this.SizeYUpDown.ForeColor = System.Drawing.SystemColors.Menu;
|
||||
resources.ApplyResources(this.SizeYUpDown, "SizeYUpDown");
|
||||
this.SizeYUpDown.Name = "SizeYUpDown";
|
||||
this.SizeYUpDown.ValueChanged += new System.EventHandler(this.SizeYUpDown_ValueChanged);
|
||||
//
|
||||
// SizeZUpDown
|
||||
//
|
||||
resources.ApplyResources(this.SizeZUpDown, "SizeZUpDown");
|
||||
this.SizeZUpDown.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(17)))), ((int)(((byte)(17)))), ((int)(((byte)(17)))));
|
||||
this.SizeZUpDown.DecimalPlaces = 1;
|
||||
this.SizeZUpDown.ForeColor = System.Drawing.SystemColors.Menu;
|
||||
resources.ApplyResources(this.SizeZUpDown, "SizeZUpDown");
|
||||
this.SizeZUpDown.Name = "SizeZUpDown";
|
||||
this.SizeZUpDown.ValueChanged += new System.EventHandler(this.SizeZUpDown_ValueChanged);
|
||||
//
|
||||
// TextureXUpDown
|
||||
//
|
||||
resources.ApplyResources(this.TextureXUpDown, "TextureXUpDown");
|
||||
this.TextureXUpDown.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(17)))), ((int)(((byte)(17)))), ((int)(((byte)(17)))));
|
||||
this.TextureXUpDown.ForeColor = System.Drawing.SystemColors.Menu;
|
||||
resources.ApplyResources(this.TextureXUpDown, "TextureXUpDown");
|
||||
this.TextureXUpDown.Maximum = new decimal(new int[] {
|
||||
64,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.TextureXUpDown.Name = "TextureXUpDown";
|
||||
this.TextureXUpDown.ValueChanged += new System.EventHandler(this.TextureXUpDown_ValueChanged);
|
||||
//
|
||||
// TextureYUpDown
|
||||
//
|
||||
resources.ApplyResources(this.TextureYUpDown, "TextureYUpDown");
|
||||
this.TextureYUpDown.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(17)))), ((int)(((byte)(17)))), ((int)(((byte)(17)))));
|
||||
this.TextureYUpDown.ForeColor = System.Drawing.SystemColors.Menu;
|
||||
resources.ApplyResources(this.TextureYUpDown, "TextureYUpDown");
|
||||
this.TextureYUpDown.Maximum = new decimal(new int[] {
|
||||
64,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.TextureYUpDown.Name = "TextureYUpDown";
|
||||
this.TextureYUpDown.ValueChanged += new System.EventHandler(this.TextureYUpDown_ValueChanged);
|
||||
//
|
||||
// PosZUpDown
|
||||
//
|
||||
resources.ApplyResources(this.PosZUpDown, "PosZUpDown");
|
||||
this.PosZUpDown.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(17)))), ((int)(((byte)(17)))), ((int)(((byte)(17)))));
|
||||
this.PosZUpDown.DecimalPlaces = 1;
|
||||
this.PosZUpDown.ForeColor = System.Drawing.SystemColors.Menu;
|
||||
resources.ApplyResources(this.PosZUpDown, "PosZUpDown");
|
||||
this.PosZUpDown.Minimum = new decimal(new int[] {
|
||||
100,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.PosZUpDown.Name = "PosZUpDown";
|
||||
this.PosZUpDown.ValueChanged += new System.EventHandler(this.PosZUpDown_ValueChanged);
|
||||
//
|
||||
// PosYUpDown
|
||||
//
|
||||
resources.ApplyResources(this.PosYUpDown, "PosYUpDown");
|
||||
this.PosYUpDown.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(17)))), ((int)(((byte)(17)))), ((int)(((byte)(17)))));
|
||||
this.PosYUpDown.DecimalPlaces = 1;
|
||||
this.PosYUpDown.ForeColor = System.Drawing.SystemColors.Menu;
|
||||
resources.ApplyResources(this.PosYUpDown, "PosYUpDown");
|
||||
this.PosYUpDown.Minimum = new decimal(new int[] {
|
||||
100,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.PosYUpDown.Name = "PosYUpDown";
|
||||
this.PosYUpDown.ValueChanged += new System.EventHandler(this.PosYUpDown_ValueChanged);
|
||||
//
|
||||
// PosXUpDown
|
||||
//
|
||||
resources.ApplyResources(this.PosXUpDown, "PosXUpDown");
|
||||
this.PosXUpDown.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(17)))), ((int)(((byte)(17)))), ((int)(((byte)(17)))));
|
||||
this.PosXUpDown.DecimalPlaces = 1;
|
||||
this.PosXUpDown.ForeColor = System.Drawing.SystemColors.Menu;
|
||||
resources.ApplyResources(this.PosXUpDown, "PosXUpDown");
|
||||
this.PosXUpDown.Minimum = new decimal(new int[] {
|
||||
100,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.PosXUpDown.Name = "PosXUpDown";
|
||||
this.PosXUpDown.ValueChanged += new System.EventHandler(this.PosXUpDown_ValueChanged);
|
||||
//
|
||||
// Part
|
||||
//
|
||||
resources.ApplyResources(this.Part, "Part");
|
||||
//
|
||||
// X
|
||||
//
|
||||
resources.ApplyResources(this.X, "X");
|
||||
//
|
||||
// Y
|
||||
//
|
||||
resources.ApplyResources(this.Y, "Y");
|
||||
//
|
||||
// Z
|
||||
//
|
||||
resources.ApplyResources(this.Z, "Z");
|
||||
//
|
||||
// _Width
|
||||
//
|
||||
resources.ApplyResources(this._Width, "_Width");
|
||||
//
|
||||
// _Height
|
||||
//
|
||||
resources.ApplyResources(this._Height, "_Height");
|
||||
//
|
||||
// Length
|
||||
//
|
||||
resources.ApplyResources(this.Length, "Length");
|
||||
//
|
||||
// U
|
||||
//
|
||||
resources.ApplyResources(this.U, "U");
|
||||
//
|
||||
// V
|
||||
//
|
||||
resources.ApplyResources(this.V, "V");
|
||||
//
|
||||
// listViewBoxes
|
||||
//
|
||||
this.listViewBoxes.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.listViewBoxes.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.Part,
|
||||
this.X,
|
||||
this.Y,
|
||||
this.Z,
|
||||
this._Width,
|
||||
this._Height,
|
||||
this.Length,
|
||||
this.U,
|
||||
this.V});
|
||||
this.listViewBoxes.ContextMenuStrip = this.contextMenuStrip1;
|
||||
this.listViewBoxes.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.listViewBoxes.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
||||
this.listViewBoxes.HideSelection = false;
|
||||
this.listViewBoxes.LabelEdit = true;
|
||||
resources.ApplyResources(this.listViewBoxes, "listViewBoxes");
|
||||
this.listViewBoxes.MultiSelect = false;
|
||||
this.listViewBoxes.Name = "listViewBoxes";
|
||||
this.listViewBoxes.UseCompatibleStateImageBehavior = false;
|
||||
this.listViewBoxes.View = System.Windows.Forms.View.Details;
|
||||
this.listViewBoxes.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged);
|
||||
this.listViewBoxes.Click += new System.EventHandler(this.listView1_Click);
|
||||
this.listViewBoxes.DoubleClick += new System.EventHandler(this.listView1_DoubleClick);
|
||||
this.listViewBoxes.KeyDown += new System.Windows.Forms.KeyEventHandler(this.delStuffUsingDelKey);
|
||||
//
|
||||
// renderer3D1
|
||||
//
|
||||
resources.ApplyResources(this.renderer3D1, "renderer3D1");
|
||||
this.renderer3D1.ANIM = skinANIM1;
|
||||
this.renderer3D1.BackColor = System.Drawing.Color.DarkGray;
|
||||
this.renderer3D1.BackColor = System.Drawing.Color.DimGray;
|
||||
this.renderer3D1.CameraTarget = ((OpenTK.Vector2)(resources.GetObject("renderer3D1.CameraTarget")));
|
||||
this.renderer3D1.Name = "renderer3D1";
|
||||
this.renderer3D1.Texture = null;
|
||||
@@ -532,16 +413,26 @@
|
||||
//
|
||||
// uvPictureBox
|
||||
//
|
||||
this.uvPictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
resources.ApplyResources(this.uvPictureBox, "uvPictureBox");
|
||||
this.uvPictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.uvPictureBox.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
|
||||
this.uvPictureBox.Name = "uvPictureBox";
|
||||
this.uvPictureBox.TabStop = false;
|
||||
//
|
||||
// generateModel
|
||||
// listBox1
|
||||
//
|
||||
this.listBox1.ContextMenuStrip = this.contextMenuStrip1;
|
||||
this.listBox1.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.listBox1, "listBox1");
|
||||
this.listBox1.Name = "listBox1";
|
||||
this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged);
|
||||
this.listBox1.DoubleClick += new System.EventHandler(this.listBox1_DoubleClick);
|
||||
//
|
||||
// CustomModelEditor
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.listBox1);
|
||||
this.Controls.Add(this.renderer3D1);
|
||||
this.Controls.Add(this.PosZUpDown);
|
||||
this.Controls.Add(this.PosYUpDown);
|
||||
@@ -554,30 +445,23 @@
|
||||
this.Controls.Add(this.checkBoxArmor);
|
||||
this.Controls.Add(this.checkGuide);
|
||||
this.Controls.Add(this.generateTextureCheckBox);
|
||||
this.Controls.Add(this.buttonTemplate);
|
||||
this.Controls.Add(this.listViewBoxes);
|
||||
this.Controls.Add(this.OpenJSONButton);
|
||||
this.Controls.Add(this.buttonExportModel);
|
||||
this.Controls.Add(this.buttonImportModel);
|
||||
this.Controls.Add(this.buttonEXPORT);
|
||||
this.Controls.Add(labelTextureMappingPreview);
|
||||
this.Controls.Add(this.uvPictureBox);
|
||||
this.Controls.Add(this.comboParent);
|
||||
this.Controls.Add(label6);
|
||||
this.Controls.Add(this.buttonIMPORT);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Controls.Add(label7);
|
||||
this.Controls.Add(this.labelView);
|
||||
this.Controls.Add(this.buttonDone);
|
||||
this.Controls.Add(label3);
|
||||
this.Controls.Add(label5);
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "generateModel";
|
||||
this.Name = "CustomModelEditor";
|
||||
this.Style = MetroFramework.MetroColorStyle.Silver;
|
||||
this.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.generateModel_FormClosing);
|
||||
this.Load += new System.EventHandler(this.generateModel_Load);
|
||||
this.SizeChanged += new System.EventHandler(this.generateModel_SizeChanged);
|
||||
this.contextMenuStrip1.ResumeLayout(false);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.tabBody.ResumeLayout(false);
|
||||
@@ -604,14 +488,13 @@
|
||||
private System.Windows.Forms.ToolStripMenuItem cloneToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem deleteToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem changeColorToolStripMenuItem;
|
||||
private System.Windows.Forms.Button buttonDone;
|
||||
private System.Windows.Forms.Button OpenJSONButton;
|
||||
private System.Windows.Forms.Button buttonExportModel;
|
||||
private System.Windows.Forms.Button buttonImportModel;
|
||||
private MetroFramework.Controls.MetroButton buttonDone;
|
||||
private MetroFramework.Controls.MetroButton OpenJSONButton;
|
||||
private MetroFramework.Controls.MetroButton buttonExportModel;
|
||||
private MetroFramework.Controls.MetroButton buttonImportModel;
|
||||
private PckStudio.ToolboxItems.InterpolationPictureBox uvPictureBox;
|
||||
private System.Windows.Forms.Button buttonIMPORT;
|
||||
private System.Windows.Forms.Button buttonEXPORT;
|
||||
private System.Windows.Forms.ComboBox comboParent;
|
||||
private MetroFramework.Controls.MetroButton buttonIMPORT;
|
||||
private MetroFramework.Controls.MetroButton buttonEXPORT;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.TabControl tabBody;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
@@ -625,8 +508,6 @@
|
||||
private System.Windows.Forms.TextBox offsetHead;
|
||||
private System.Windows.Forms.Label label12;
|
||||
private System.Windows.Forms.TabPage tabArmor;
|
||||
private System.Windows.Forms.Label labelView;
|
||||
private MetroFramework.Controls.MetroButton buttonTemplate;
|
||||
private MetroFramework.Controls.MetroCheckBox generateTextureCheckBox;
|
||||
private MetroFramework.Controls.MetroCheckBox checkGuide;
|
||||
private MetroFramework.Controls.MetroCheckBox checkBoxArmor;
|
||||
@@ -638,16 +519,7 @@
|
||||
private System.Windows.Forms.NumericUpDown PosZUpDown;
|
||||
private System.Windows.Forms.NumericUpDown PosYUpDown;
|
||||
private System.Windows.Forms.NumericUpDown PosXUpDown;
|
||||
private System.Windows.Forms.ColumnHeader Part;
|
||||
private System.Windows.Forms.ColumnHeader X;
|
||||
private System.Windows.Forms.ColumnHeader Y;
|
||||
private System.Windows.Forms.ColumnHeader Z;
|
||||
private System.Windows.Forms.ColumnHeader _Width;
|
||||
private System.Windows.Forms.ColumnHeader _Height;
|
||||
private System.Windows.Forms.ColumnHeader Length;
|
||||
private System.Windows.Forms.ColumnHeader U;
|
||||
private System.Windows.Forms.ColumnHeader V;
|
||||
private System.Windows.Forms.ListView listViewBoxes;
|
||||
private Rendering.SkinRenderer renderer3D1;
|
||||
private System.Windows.Forms.ListBox listBox1;
|
||||
}
|
||||
}
|
||||
490
PCK-Studio/Forms/Skins-And-Textures/CustomModelEditor.cs
Normal file
490
PCK-Studio/Forms/Skins-And-Textures/CustomModelEditor.cs
Normal file
@@ -0,0 +1,490 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using MetroFramework.Forms;
|
||||
using OMI.Formats.Pck;
|
||||
using PckStudio.Internal;
|
||||
using PckStudio.Extensions;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using PckStudio.Forms.Editor;
|
||||
|
||||
namespace PckStudio.Forms
|
||||
{
|
||||
public partial class CustomModelEditor : MetroForm
|
||||
{
|
||||
private Image _previewImage;
|
||||
public Image PreviewImage => _previewImage;
|
||||
|
||||
private PckFileData _file;
|
||||
|
||||
private static GraphicsConfig _graphicsConfig = new GraphicsConfig()
|
||||
{
|
||||
InterpolationMode = InterpolationMode.NearestNeighbor,
|
||||
PixelOffsetMode = PixelOffsetMode.HighQuality,
|
||||
};
|
||||
|
||||
private static readonly string[] ValidModelBoxTypes = new string[]
|
||||
{
|
||||
// Base 64x32 Parts
|
||||
"HEAD",
|
||||
"BODY",
|
||||
"ARM0",
|
||||
"ARM1",
|
||||
"LEG0",
|
||||
"LEG1",
|
||||
|
||||
// 64x64 Overlay Parts
|
||||
"HEADWEAR",
|
||||
"JACKET",
|
||||
"SLEEVE0",
|
||||
"SLEEVE1",
|
||||
"WAIST",
|
||||
"PANTS0",
|
||||
"PANTS1",
|
||||
|
||||
// Armor Parts
|
||||
"BODYARMOR",
|
||||
"ARMARMOR0",
|
||||
"ARMARMOR1",
|
||||
"BELT",
|
||||
"LEGGING0",
|
||||
"LEGGING1",
|
||||
"SOCK0",
|
||||
"SOCK1",
|
||||
"BOOT0",
|
||||
"BOOT1"
|
||||
};
|
||||
|
||||
private static readonly string[] ValidModelOffsetTypes = new string[]
|
||||
{
|
||||
// Body Offsets
|
||||
"HEAD",
|
||||
"BODY",
|
||||
"ARM0",
|
||||
"ARM1",
|
||||
"LEG0",
|
||||
"LEG1",
|
||||
|
||||
// Armor Offsets
|
||||
"HELMET",
|
||||
"CHEST", "BODYARMOR",
|
||||
"SHOULDER0", "ARMARMOR0",
|
||||
"SHOULDER1", "ARMARMOR0",
|
||||
"BELT",
|
||||
"LEGGING0",
|
||||
"LEGGING1",
|
||||
"SOCK0", "BOOT0",
|
||||
"SOCK1", "BOOT1",
|
||||
|
||||
"TOOL0",
|
||||
"TOOL1",
|
||||
};
|
||||
|
||||
List<ModelOffset> modelOffsets = new List<ModelOffset>();
|
||||
|
||||
private readonly struct ModelOffset
|
||||
{
|
||||
public readonly string Name;
|
||||
public readonly float YOffset;
|
||||
|
||||
public ModelOffset(string name, float yOffset)
|
||||
{
|
||||
Name = name;
|
||||
YOffset = yOffset;
|
||||
}
|
||||
public (string, string) ToProperty()
|
||||
{
|
||||
string value = $"{Name} Y {YOffset}";
|
||||
return ("OFFSET", value.Replace(',','.'));
|
||||
}
|
||||
}
|
||||
|
||||
public CustomModelEditor(PckFileData file)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
_file = file;
|
||||
if (_file.Size > 0)
|
||||
{
|
||||
uvPictureBox.Image = renderer3D1.Texture = _file.GetTexture();
|
||||
}
|
||||
//comboParent.Items.AddRange(ValidModelBoxTypes);
|
||||
LoadModelData(file.Properties);
|
||||
}
|
||||
|
||||
private static readonly Regex sWhitespace = new Regex(@"\s+");
|
||||
public static string ReplaceWhitespace(string input, string replacement)
|
||||
{
|
||||
return sWhitespace.Replace(input, replacement);
|
||||
}
|
||||
|
||||
private void LoadModelData(PckFileProperties properties)
|
||||
{
|
||||
renderer3D1.ANIM = properties.GetPropertyValue("ANIM", SkinANIM.FromString);
|
||||
var boxProperties = properties.GetProperties("BOX");
|
||||
|
||||
Array.ForEach(boxProperties, kv => renderer3D1.ModelData.Add(SkinBOX.FromString(kv.Value)));
|
||||
listBox1.DataSource = renderer3D1.ModelData;
|
||||
listBox1.DisplayMember = "Type";
|
||||
|
||||
properties.GetProperties("OFFSET").All(kv => {
|
||||
string[] offset = ReplaceWhitespace(kv.Value, ",").TrimEnd('\n', '\r', ' ').Split(',');
|
||||
if (offset.Length < 3)
|
||||
return false;
|
||||
string name = offset[0];
|
||||
if (offset[1] != "Y")
|
||||
return false;
|
||||
float value = float.Parse(offset[2]);
|
||||
if (ValidModelOffsetTypes.Contains(name))
|
||||
{
|
||||
modelOffsets.Add(new ModelOffset(name, value));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
private void GenerateUVTextureMap()
|
||||
{
|
||||
Random rng = new Random();
|
||||
using (Graphics graphics = Graphics.FromImage(uvPictureBox.Image))
|
||||
{
|
||||
graphics.ApplyConfig(_graphicsConfig);
|
||||
//foreach (var part in modelBoxes)
|
||||
//{
|
||||
// float width = part.Size.X * 2;
|
||||
// float height = part.Size.Y * 2;
|
||||
// float length = part.Size.Z * 2;
|
||||
// float u = part.UV.X * 2;
|
||||
// float v = part.UV.Y * 2;
|
||||
// int argb = rng.Next(-16777216, -1); // 0xFF000000 - 0xFFFFFFFF
|
||||
// var color = Color.FromArgb(argb);
|
||||
// Brush brush = new SolidBrush(color);
|
||||
// graphics.FillRectangle(brush, u + length, v, width, length);
|
||||
// graphics.FillRectangle(brush, u + length + width, v, width, length);
|
||||
// graphics.FillRectangle(brush, u, length + v, length, height);
|
||||
// graphics.FillRectangle(brush, u + length, v + length, width, height);
|
||||
// graphics.FillRectangle(brush, u + length + width, v + length, width, height);
|
||||
// graphics.FillRectangle(brush, u + length + width * 2, v + length, length, height);
|
||||
//}
|
||||
}
|
||||
uvPictureBox.Invalidate();
|
||||
}
|
||||
|
||||
private void createToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var boxEditor = new BoxEditor(SkinBOX.Empty, false);
|
||||
if (boxEditor.ShowDialog() == DialogResult.OK)
|
||||
renderer3D1.ModelData.Add(boxEditor.Result);
|
||||
}
|
||||
|
||||
//Export Current Skin Texture
|
||||
private void buttonEXPORT_Click(object sender, EventArgs e)
|
||||
{
|
||||
Bitmap bitmap = new Bitmap(uvPictureBox.Image, 64, 64);
|
||||
using SaveFileDialog saveFileDialog = new SaveFileDialog();
|
||||
saveFileDialog.Filter = "PNG Image Files | *.png";
|
||||
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
bitmap.Save(saveFileDialog.FileName, ImageFormat.Png);
|
||||
}
|
||||
}
|
||||
|
||||
//Imports Skin Texture
|
||||
private void buttonIMPORT_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog openFileDialog = new OpenFileDialog();
|
||||
openFileDialog.Filter = "PNG Image Files | *.png";
|
||||
openFileDialog.Title = "Select Skin Texture";
|
||||
|
||||
if (openFileDialog.ShowDialog() == DialogResult.OK) // skins can only be a 1:1 ratio (base 64x64) or a 2:1 ratio (base 64x32)
|
||||
{
|
||||
using (var img = Image.FromFile(openFileDialog.FileName))
|
||||
{
|
||||
if ((img.Width == img.Height || img.Height == img.Width / 2))
|
||||
{
|
||||
generateTextureCheckBox.Checked = false;
|
||||
using (Graphics graphics = Graphics.FromImage(uvPictureBox.Image))
|
||||
{
|
||||
graphics.ApplyConfig(_graphicsConfig);
|
||||
graphics.DrawImage(img, 0, 0, img.Width, img.Height);
|
||||
}
|
||||
uvPictureBox.Invalidate();
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(this, "Not a valid skin file", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Creates Model Data and Finalizes
|
||||
private void buttonDone_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach (var part in renderer3D1.ModelData)
|
||||
{
|
||||
_file.Properties.Add("BOX", part);
|
||||
}
|
||||
var img = new Bitmap(renderer3D1.Size.Width, renderer3D1.Size.Height);
|
||||
renderer3D1.DrawToBitmap(img, renderer3D1.Bounds);
|
||||
_previewImage = img;
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
// Exports model as csm file
|
||||
private void buttonExportModel_Click(object sender, EventArgs e)
|
||||
{
|
||||
//SaveFileDialog saveFileDialog = new SaveFileDialog();
|
||||
//saveFileDialog.Filter = "Custom Skin Model File | *.CSM";
|
||||
//if (saveFileDialog.ShowDialog() != DialogResult.OK)
|
||||
// return;
|
||||
//string contents = "";
|
||||
//foreach (ListViewItem listViewItem in listViewBoxes.Items)
|
||||
//{
|
||||
// string str = "";
|
||||
// foreach (ListViewItem.ListViewSubItem subItem in listViewItem.SubItems)
|
||||
// {
|
||||
// if (subItem.Text != "unchecked")
|
||||
// str = str + subItem.Text + Environment.NewLine;
|
||||
// }
|
||||
// contents += (listViewItem.Text + Environment.NewLine + listViewItem.Tag) + Environment.NewLine + str;
|
||||
//}
|
||||
|
||||
//File.WriteAllText(saveFileDialog.FileName, contents);
|
||||
}
|
||||
|
||||
[Obsolete("Kept for backwards compatibility, remove later.")]
|
||||
private void buttonImportModel_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog openFileDialog = new OpenFileDialog();
|
||||
openFileDialog.Filter = "Custom Skin Model File | *.CSM";
|
||||
openFileDialog.Title = "Select Custom Skin Model File";
|
||||
if (MessageBox.Show("Import custom model project file? Your current work will be lost!", "", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1) == DialogResult.Yes && openFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
renderer3D1.ModelData.Clear();
|
||||
StreamReader reader = new StreamReader(openFileDialog.FileName);
|
||||
while (!reader.EndOfStream)
|
||||
{
|
||||
reader.ReadLine();
|
||||
string part = reader.ReadLine();
|
||||
reader.ReadLine();
|
||||
var PosX = reader.ReadLine();
|
||||
var PosY = reader.ReadLine();
|
||||
var PosZ = reader.ReadLine();
|
||||
var SizeX = reader.ReadLine();
|
||||
var SizeY = reader.ReadLine();
|
||||
var SizeZ = reader.ReadLine();
|
||||
var UvX = reader.ReadLine();
|
||||
var UvY = reader.ReadLine();
|
||||
renderer3D1.ModelData.Add(SkinBOX.FromString($"{part} {PosX} {PosY} {PosZ} {SizeX} {SizeY} {SizeZ} {UvX} {UvY}"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void cloneToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
//try
|
||||
//{
|
||||
// ListViewItem listViewItem = new ListViewItem();
|
||||
// var selected = listViewBoxes.SelectedItems[0];
|
||||
// listViewItem.Text = selected.Text;
|
||||
// listViewItem.Tag = selected.Tag;
|
||||
// int num = 0;
|
||||
// foreach (ListViewItem.ListViewSubItem subItem in selected.SubItems)
|
||||
// {
|
||||
// if (num > 0)
|
||||
// listViewItem.SubItems.Add(subItem.Text);
|
||||
// ++num;
|
||||
// }
|
||||
// listViewBoxes.Items.Add(listViewItem);
|
||||
//}
|
||||
//catch (Exception ex)
|
||||
//{
|
||||
// Console.WriteLine(ex.Message);
|
||||
// MessageBox.Show("Please Select a Part");
|
||||
//}
|
||||
}
|
||||
|
||||
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listBox1.SelectedItem is SkinBOX box)
|
||||
{
|
||||
renderer3D1.ModelData.Remove(box);
|
||||
}
|
||||
}
|
||||
|
||||
private void generateModel_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
/*if (MessageBox.Show("You done here?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
|
||||
{
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
e.Cancel = false;*/
|
||||
}
|
||||
|
||||
//Del stuff using key
|
||||
private void delStuffUsingDelKey(object sender, KeyEventArgs e)
|
||||
{
|
||||
//if (e.KeyCode == Keys.Delete && listViewBoxes.SelectedItems.Count != 0 &&
|
||||
// listViewBoxes.SelectedItems[0].Tag is SkinBOX part)
|
||||
//{
|
||||
// if (modelBoxes.Remove(part))
|
||||
// listViewBoxes.SelectedItems[0].Remove();
|
||||
|
||||
//}
|
||||
}
|
||||
|
||||
private void OpenJSONButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog openFileDialog = new OpenFileDialog();
|
||||
openFileDialog.Filter = "JSON Model File | *.JSON";
|
||||
openFileDialog.Title = "Select JSON Model File";
|
||||
if (MessageBox.Show("Import custom model project file? Your current work will be lost!", "", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1) == DialogResult.Yes && openFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
//listViewBoxes.Items.Clear();
|
||||
string str1 = JSONToCSM(File.ReadAllText(openFileDialog.FileName));
|
||||
int x = 0;
|
||||
foreach (string str2 in str1.Split("\n\r".ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
|
||||
++x;
|
||||
int y = x / 11;
|
||||
ListView listView = new ListView();
|
||||
int num3 = 0;
|
||||
do
|
||||
{
|
||||
listView.Items.Add("BOX");
|
||||
++num3;
|
||||
}
|
||||
while (num3 < y);
|
||||
|
||||
|
||||
foreach (ListViewItem current in listView.Items)
|
||||
{
|
||||
ListViewItem listViewItem = new ListViewItem();
|
||||
int num4 = 0;
|
||||
foreach (string text in str1.Split("\n\r".ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
|
||||
{
|
||||
++num4;
|
||||
if (num4 == 1 + 11 * current.Index)
|
||||
listViewItem.Text = text;
|
||||
else if (num4 == 2 + 11 * current.Index)
|
||||
listViewItem.Tag = text;
|
||||
else if (num4 == 4 + 11 * current.Index)
|
||||
listViewItem.SubItems.Add(text);
|
||||
else if (num4 == 5 + 11 * current.Index)
|
||||
listViewItem.SubItems.Add(text);
|
||||
else if (num4 == 6 + 11 * current.Index)
|
||||
listViewItem.SubItems.Add(text);
|
||||
else if (num4 == 7 + 11 * current.Index)
|
||||
listViewItem.SubItems.Add(text);
|
||||
else if (num4 == 8 + 11 * current.Index)
|
||||
listViewItem.SubItems.Add(text);
|
||||
else if (num4 == 9 + 11 * current.Index)
|
||||
listViewItem.SubItems.Add(text);
|
||||
else if (num4 == 10 + 11 * current.Index)
|
||||
listViewItem.SubItems.Add(text);
|
||||
else if (num4 == 11 + 11 * current.Index)
|
||||
{
|
||||
listViewItem.SubItems.Add(text);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[Obsolete("Will be removed")]
|
||||
public string JSONToCSM(string inputJson)
|
||||
{
|
||||
CSMJObject jsonDe = JsonConvert.DeserializeObject<CSMJObject>(inputJson);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach (CSMJObjectGroup group in jsonDe.Groups)
|
||||
{
|
||||
string PARENT = group.Name;
|
||||
foreach (int i in group.children)
|
||||
{
|
||||
string name = jsonDe.Elements[i].Name;
|
||||
float PosX = jsonDe.Elements[i].from[0] + group.origin[0];
|
||||
float PosY = jsonDe.Elements[i].from[1] + group.origin[1];
|
||||
float PosZ = jsonDe.Elements[i].from[2] + group.origin[2];
|
||||
float SizeX = jsonDe.Elements[i].to[0] - jsonDe.Elements[i].from[0];
|
||||
float SizeY = jsonDe.Elements[i].to[1] - jsonDe.Elements[i].from[1];
|
||||
float SizeZ = jsonDe.Elements[i].to[2] - jsonDe.Elements[i].from[2];
|
||||
float U = 0;
|
||||
float V = 0;
|
||||
|
||||
sb.AppendLine(name + "\n" + PARENT + "\n" + name + "\n" + PosX + "\n" + PosY + "\n" + PosZ + "\n" + SizeX + "\n" + SizeY + "\n" + SizeZ + "\n" + U + "\n" + V);
|
||||
}
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
private void renderer3D1_TextureChanging(object sender, Rendering.TextureChangingEventArgs e)
|
||||
{
|
||||
// TODO: add validation for 64x64 and 64x32
|
||||
uvPictureBox.Image = e.NewTexture;
|
||||
}
|
||||
|
||||
private void listBox1_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
if (listBox1.SelectedItem is SkinBOX box)
|
||||
{
|
||||
var boxEditor = new BoxEditor(box, false);
|
||||
if (boxEditor.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
renderer3D1.ModelData[listBox1.SelectedIndex] = boxEditor.Result;
|
||||
listBox1.Update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
//renderer3D1.SelectedIndex = listBox1.SelectedIndex;
|
||||
}
|
||||
}
|
||||
|
||||
class CSMJObject
|
||||
{
|
||||
[JsonProperty("credit")]
|
||||
public string Credit { get; set; }
|
||||
|
||||
[JsonProperty("texture_size")]
|
||||
public int[] TextureSize;
|
||||
|
||||
[JsonProperty("elements")]
|
||||
public CSMJObjectElement[] Elements;
|
||||
|
||||
[JsonProperty("groups")]
|
||||
public CSMJObjectGroup[] Groups;
|
||||
}
|
||||
|
||||
class CSMJObjectElement
|
||||
{
|
||||
[JsonProperty("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
public float[] from;
|
||||
public float[] to;
|
||||
}
|
||||
|
||||
class CSMJObjectGroup
|
||||
{
|
||||
[JsonProperty("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
public float[] origin;
|
||||
public int[] children;
|
||||
}
|
||||
}
|
||||
@@ -117,51 +117,21 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="label6.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="label6.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>23, 459</value>
|
||||
</data>
|
||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>38, 13</value>
|
||||
</data>
|
||||
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>137</value>
|
||||
</data>
|
||||
<data name="label6.Text" xml:space="preserve">
|
||||
<value>Parent</value>
|
||||
</data>
|
||||
<data name=">>label6.Name" xml:space="preserve">
|
||||
<value>label6</value>
|
||||
</data>
|
||||
<data name=">>label6.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label6.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label6.ZOrder" xml:space="preserve">
|
||||
<value>22</value>
|
||||
</data>
|
||||
<metadata name="label5.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="label5.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label5.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>691, 357</value>
|
||||
</data>
|
||||
@@ -184,11 +154,14 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label5.ZOrder" xml:space="preserve">
|
||||
<value>29</value>
|
||||
<value>25</value>
|
||||
</data>
|
||||
<metadata name="label3.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<data name="label3.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
@@ -217,7 +190,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
||||
<value>28</value>
|
||||
<value>24</value>
|
||||
</data>
|
||||
<metadata name="label7.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
@@ -250,11 +223,14 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label7.ZOrder" xml:space="preserve">
|
||||
<value>25</value>
|
||||
<value>22</value>
|
||||
</data>
|
||||
<metadata name="labelTextureMappingPreview.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<data name="labelTextureMappingPreview.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="labelTextureMappingPreview.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
@@ -283,7 +259,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>labelTextureMappingPreview.ZOrder" xml:space="preserve">
|
||||
<value>19</value>
|
||||
<value>18</value>
|
||||
</data>
|
||||
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
@@ -300,7 +276,7 @@
|
||||
<value>151, 26</value>
|
||||
</data>
|
||||
<data name="createToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Create</value>
|
||||
<value>Add Cube</value>
|
||||
</data>
|
||||
<data name="cloneToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
@@ -338,6 +314,9 @@
|
||||
<data name="deleteToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Delete</value>
|
||||
</data>
|
||||
<data name="changeColorToolStripMenuItem.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="changeColorToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
@@ -366,14 +345,11 @@
|
||||
<data name=">>contextMenuStrip1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="buttonDone.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>Flat</value>
|
||||
</data>
|
||||
<data name="buttonDone.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
<data name="buttonDone.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="buttonDone.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>654, 676</value>
|
||||
<value>653, 663</value>
|
||||
</data>
|
||||
<data name="buttonDone.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>130, 22</value>
|
||||
@@ -388,43 +364,16 @@
|
||||
<value>buttonDone</value>
|
||||
</data>
|
||||
<data name=">>buttonDone.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>MetroFramework.Controls.MetroButton, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
|
||||
</data>
|
||||
<data name=">>buttonDone.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>buttonDone.ZOrder" xml:space="preserve">
|
||||
<value>27</value>
|
||||
<value>23</value>
|
||||
</data>
|
||||
<data name="labelView.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="labelView.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="labelView.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>289, 647</value>
|
||||
</data>
|
||||
<data name="labelView.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>33, 13</value>
|
||||
</data>
|
||||
<data name="labelView.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>102</value>
|
||||
</data>
|
||||
<data name="labelView.Text" xml:space="preserve">
|
||||
<value>View:</value>
|
||||
</data>
|
||||
<data name=">>labelView.Name" xml:space="preserve">
|
||||
<value>labelView</value>
|
||||
</data>
|
||||
<data name=">>labelView.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>labelView.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>labelView.ZOrder" xml:space="preserve">
|
||||
<value>26</value>
|
||||
<data name="groupBox1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="tabArmor.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>4, 22</value>
|
||||
@@ -799,52 +748,10 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
||||
<value>24</value>
|
||||
</data>
|
||||
<data name="comboParent.Items" xml:space="preserve">
|
||||
<value>HEAD</value>
|
||||
</data>
|
||||
<data name="comboParent.Items1" xml:space="preserve">
|
||||
<value>BODY</value>
|
||||
</data>
|
||||
<data name="comboParent.Items2" xml:space="preserve">
|
||||
<value>ARM0</value>
|
||||
</data>
|
||||
<data name="comboParent.Items3" xml:space="preserve">
|
||||
<value>ARM1</value>
|
||||
</data>
|
||||
<data name="comboParent.Items4" xml:space="preserve">
|
||||
<value>LEG0</value>
|
||||
</data>
|
||||
<data name="comboParent.Items5" xml:space="preserve">
|
||||
<value>LEG1</value>
|
||||
</data>
|
||||
<data name="comboParent.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>23, 484</value>
|
||||
</data>
|
||||
<data name="comboParent.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>114, 21</value>
|
||||
</data>
|
||||
<data name="comboParent.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>134</value>
|
||||
</data>
|
||||
<data name=">>comboParent.Name" xml:space="preserve">
|
||||
<value>comboParent</value>
|
||||
</data>
|
||||
<data name=">>comboParent.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>comboParent.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>comboParent.ZOrder" xml:space="preserve">
|
||||
<value>21</value>
|
||||
</data>
|
||||
<data name="buttonEXPORT.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>Flat</value>
|
||||
</data>
|
||||
<data name="buttonEXPORT.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
<data name="buttonEXPORT.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="buttonEXPORT.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>722, 206</value>
|
||||
@@ -862,19 +769,16 @@
|
||||
<value>buttonEXPORT</value>
|
||||
</data>
|
||||
<data name=">>buttonEXPORT.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>MetroFramework.Controls.MetroButton, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
|
||||
</data>
|
||||
<data name=">>buttonEXPORT.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>buttonEXPORT.ZOrder" xml:space="preserve">
|
||||
<value>18</value>
|
||||
<value>17</value>
|
||||
</data>
|
||||
<data name="buttonIMPORT.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>Flat</value>
|
||||
</data>
|
||||
<data name="buttonIMPORT.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
<data name="buttonIMPORT.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="buttonIMPORT.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>655, 206</value>
|
||||
@@ -892,22 +796,22 @@
|
||||
<value>buttonIMPORT</value>
|
||||
</data>
|
||||
<data name=">>buttonIMPORT.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>MetroFramework.Controls.MetroButton, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
|
||||
</data>
|
||||
<data name=">>buttonIMPORT.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>buttonIMPORT.ZOrder" xml:space="preserve">
|
||||
<value>23</value>
|
||||
<value>20</value>
|
||||
</data>
|
||||
<data name="buttonImportModel.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>Flat</value>
|
||||
<data name="buttonImportModel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="buttonImportModel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
<data name="buttonImportModel.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="buttonImportModel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>306, 677</value>
|
||||
<value>306, 663</value>
|
||||
</data>
|
||||
<data name="buttonImportModel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>106, 21</value>
|
||||
@@ -922,22 +826,22 @@
|
||||
<value>buttonImportModel</value>
|
||||
</data>
|
||||
<data name=">>buttonImportModel.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>MetroFramework.Controls.MetroButton, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
|
||||
</data>
|
||||
<data name=">>buttonImportModel.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>buttonImportModel.ZOrder" xml:space="preserve">
|
||||
<value>17</value>
|
||||
<value>16</value>
|
||||
</data>
|
||||
<data name="buttonExportModel.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>Flat</value>
|
||||
<data name="buttonExportModel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="buttonExportModel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
<data name="buttonExportModel.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="buttonExportModel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>418, 677</value>
|
||||
<value>418, 663</value>
|
||||
</data>
|
||||
<data name="buttonExportModel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>89, 21</value>
|
||||
@@ -952,22 +856,22 @@
|
||||
<value>buttonExportModel</value>
|
||||
</data>
|
||||
<data name=">>buttonExportModel.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>MetroFramework.Controls.MetroButton, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
|
||||
</data>
|
||||
<data name=">>buttonExportModel.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>buttonExportModel.ZOrder" xml:space="preserve">
|
||||
<value>16</value>
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name="OpenJSONButton.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>Flat</value>
|
||||
<data name="OpenJSONButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="OpenJSONButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
<data name="OpenJSONButton.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="OpenJSONButton.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>194, 677</value>
|
||||
<value>194, 663</value>
|
||||
</data>
|
||||
<data name="OpenJSONButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>106, 21</value>
|
||||
@@ -982,43 +886,19 @@
|
||||
<value>OpenJSONButton</value>
|
||||
</data>
|
||||
<data name=">>OpenJSONButton.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>MetroFramework.Controls.MetroButton, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
|
||||
</data>
|
||||
<data name=">>OpenJSONButton.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>OpenJSONButton.ZOrder" xml:space="preserve">
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name="buttonTemplate.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>23, 511</value>
|
||||
</data>
|
||||
<data name="buttonTemplate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>114, 21</value>
|
||||
</data>
|
||||
<data name="buttonTemplate.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>146</value>
|
||||
</data>
|
||||
<data name="buttonTemplate.Text" xml:space="preserve">
|
||||
<value>Load Template</value>
|
||||
</data>
|
||||
<data name=">>buttonTemplate.Name" xml:space="preserve">
|
||||
<value>buttonTemplate</value>
|
||||
</data>
|
||||
<data name=">>buttonTemplate.Type" xml:space="preserve">
|
||||
<value>MetroFramework.Controls.MetroButton, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
|
||||
</data>
|
||||
<data name=">>buttonTemplate.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>buttonTemplate.ZOrder" xml:space="preserve">
|
||||
<value>13</value>
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name="generateTextureCheckBox.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="generateTextureCheckBox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>23, 556</value>
|
||||
<value>23, 547</value>
|
||||
</data>
|
||||
<data name="generateTextureCheckBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>140, 15</value>
|
||||
@@ -1039,13 +919,13 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>generateTextureCheckBox.ZOrder" xml:space="preserve">
|
||||
<value>12</value>
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="checkGuide.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="checkGuide.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>23, 577</value>
|
||||
<value>23, 568</value>
|
||||
</data>
|
||||
<data name="checkGuide.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>84, 15</value>
|
||||
@@ -1066,13 +946,13 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>checkGuide.ZOrder" xml:space="preserve">
|
||||
<value>11</value>
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="checkBoxArmor.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="checkBoxArmor.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>23, 598</value>
|
||||
<value>23, 589</value>
|
||||
</data>
|
||||
<data name="checkBoxArmor.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>129, 15</value>
|
||||
@@ -1093,7 +973,10 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>checkBoxArmor.ZOrder" xml:space="preserve">
|
||||
<value>10</value>
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="SizeXUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="SizeXUpDown.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>658, 275</value>
|
||||
@@ -1117,7 +1000,10 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>SizeXUpDown.ZOrder" xml:space="preserve">
|
||||
<value>9</value>
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="SizeYUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="SizeYUpDown.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>658, 301</value>
|
||||
@@ -1141,7 +1027,10 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>SizeYUpDown.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="SizeZUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="SizeZUpDown.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>658, 327</value>
|
||||
@@ -1165,7 +1054,10 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>SizeZUpDown.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="TextureXUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="TextureXUpDown.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>682, 233</value>
|
||||
@@ -1186,7 +1078,10 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>TextureXUpDown.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="TextureYUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="TextureYUpDown.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>731, 234</value>
|
||||
@@ -1207,7 +1102,10 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>TextureYUpDown.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="PosZUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="PosZUpDown.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>657, 425</value>
|
||||
@@ -1231,7 +1129,10 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>PosZUpDown.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="PosYUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="PosYUpDown.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>658, 399</value>
|
||||
@@ -1255,7 +1156,10 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>PosYUpDown.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="PosXUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="PosXUpDown.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>658, 373</value>
|
||||
@@ -1279,97 +1183,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>PosXUpDown.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="Part.Text" xml:space="preserve">
|
||||
<value>Part</value>
|
||||
</data>
|
||||
<data name="Part.Width" type="System.Int32, mscorlib">
|
||||
<value>40</value>
|
||||
</data>
|
||||
<data name="X.Text" xml:space="preserve">
|
||||
<value>X</value>
|
||||
</data>
|
||||
<data name="X.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
|
||||
<value>Center</value>
|
||||
</data>
|
||||
<data name="X.Width" type="System.Int32, mscorlib">
|
||||
<value>30</value>
|
||||
</data>
|
||||
<data name="Y.Text" xml:space="preserve">
|
||||
<value>Y</value>
|
||||
</data>
|
||||
<data name="Y.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
|
||||
<value>Center</value>
|
||||
</data>
|
||||
<data name="Y.Width" type="System.Int32, mscorlib">
|
||||
<value>30</value>
|
||||
</data>
|
||||
<data name="Z.Text" xml:space="preserve">
|
||||
<value>Z</value>
|
||||
</data>
|
||||
<data name="Z.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
|
||||
<value>Center</value>
|
||||
</data>
|
||||
<data name="Z.Width" type="System.Int32, mscorlib">
|
||||
<value>30</value>
|
||||
</data>
|
||||
<data name="_Width.Text" xml:space="preserve">
|
||||
<value>Width</value>
|
||||
</data>
|
||||
<data name="_Width.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
|
||||
<value>Center</value>
|
||||
</data>
|
||||
<data name="_Height.Text" xml:space="preserve">
|
||||
<value>Height</value>
|
||||
</data>
|
||||
<data name="_Height.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
|
||||
<value>Center</value>
|
||||
</data>
|
||||
<data name="Length.Text" xml:space="preserve">
|
||||
<value>Length</value>
|
||||
</data>
|
||||
<data name="Length.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
|
||||
<value>Center</value>
|
||||
</data>
|
||||
<data name="U.Text" xml:space="preserve">
|
||||
<value>U</value>
|
||||
</data>
|
||||
<data name="U.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
|
||||
<value>Center</value>
|
||||
</data>
|
||||
<data name="U.Width" type="System.Int32, mscorlib">
|
||||
<value>25</value>
|
||||
</data>
|
||||
<data name="V.Text" xml:space="preserve">
|
||||
<value>V</value>
|
||||
</data>
|
||||
<data name="V.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
|
||||
<value>Center</value>
|
||||
</data>
|
||||
<data name="V.Width" type="System.Int32, mscorlib">
|
||||
<value>25</value>
|
||||
</data>
|
||||
<data name="listViewBoxes.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>23, 59</value>
|
||||
</data>
|
||||
<data name="listViewBoxes.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>165, 378</value>
|
||||
</data>
|
||||
<data name="listViewBoxes.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>132</value>
|
||||
</data>
|
||||
<data name=">>listViewBoxes.Name" xml:space="preserve">
|
||||
<value>listViewBoxes</value>
|
||||
</data>
|
||||
<data name=">>listViewBoxes.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>listViewBoxes.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>listViewBoxes.ZOrder" xml:space="preserve">
|
||||
<value>14</value>
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="renderer3D1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
@@ -1385,7 +1199,7 @@
|
||||
<value>194, 59</value>
|
||||
</data>
|
||||
<data name="renderer3D1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>449, 574</value>
|
||||
<value>449, 577</value>
|
||||
</data>
|
||||
<data name="renderer3D1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -1400,7 +1214,10 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>renderer3D1.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="uvPictureBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="uvPictureBox.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
@@ -1427,7 +1244,28 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>uvPictureBox.ZOrder" xml:space="preserve">
|
||||
<value>20</value>
|
||||
<value>19</value>
|
||||
</data>
|
||||
<data name="listBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>23, 56</value>
|
||||
</data>
|
||||
<data name="listBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>165, 485</value>
|
||||
</data>
|
||||
<data name="listBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>161</value>
|
||||
</data>
|
||||
<data name=">>listBox1.Name" xml:space="preserve">
|
||||
<value>listBox1</value>
|
||||
</data>
|
||||
<data name=">>listBox1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>listBox1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>listBox1.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
@@ -1439,7 +1277,7 @@
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>806, 721</value>
|
||||
<value>806, 707</value>
|
||||
</data>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
@@ -3957,7 +3795,7 @@
|
||||
<value>CenterParent</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Model Generator</value>
|
||||
<value>Custom Model Editor</value>
|
||||
</data>
|
||||
<data name=">>createToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>createToolStripMenuItem</value>
|
||||
@@ -3983,62 +3821,8 @@
|
||||
<data name=">>changeColorToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>Part.Name" xml:space="preserve">
|
||||
<value>Part</value>
|
||||
</data>
|
||||
<data name=">>Part.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>X.Name" xml:space="preserve">
|
||||
<value>X</value>
|
||||
</data>
|
||||
<data name=">>X.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>Y.Name" xml:space="preserve">
|
||||
<value>Y</value>
|
||||
</data>
|
||||
<data name=">>Y.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>Z.Name" xml:space="preserve">
|
||||
<value>Z</value>
|
||||
</data>
|
||||
<data name=">>Z.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>_Width.Name" xml:space="preserve">
|
||||
<value>_Width</value>
|
||||
</data>
|
||||
<data name=">>_Width.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>_Height.Name" xml:space="preserve">
|
||||
<value>_Height</value>
|
||||
</data>
|
||||
<data name=">>_Height.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>Length.Name" xml:space="preserve">
|
||||
<value>Length</value>
|
||||
</data>
|
||||
<data name=">>Length.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>U.Name" xml:space="preserve">
|
||||
<value>U</value>
|
||||
</data>
|
||||
<data name=">>U.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>V.Name" xml:space="preserve">
|
||||
<value>V</value>
|
||||
</data>
|
||||
<data name=">>V.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>generateModel</value>
|
||||
<value>CustomModelEditor</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>MetroFramework.Forms.MetroForm, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
|
||||
@@ -1,801 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using MetroFramework.Forms;
|
||||
using OMI.Formats.Pck;
|
||||
using PckStudio.Internal;
|
||||
using PckStudio.Extensions;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
|
||||
namespace PckStudio.Forms
|
||||
{
|
||||
public partial class generateModel : MetroForm
|
||||
{
|
||||
private Image _previewImage;
|
||||
public Image PreviewImage => _previewImage;
|
||||
|
||||
private PckFileData _file;
|
||||
|
||||
private static Color _backgroundColor = Color.FromArgb(0xff, 0x50, 0x50, 0x50);
|
||||
private static GraphicsConfig _graphicsConfig = new GraphicsConfig()
|
||||
{
|
||||
InterpolationMode = InterpolationMode.NearestNeighbor,
|
||||
PixelOffsetMode = PixelOffsetMode.HighQuality,
|
||||
};
|
||||
|
||||
private static readonly string[] ValidModelBoxTypes = new string[]
|
||||
{
|
||||
// Base 64x32 Parts
|
||||
"HEAD",
|
||||
"BODY",
|
||||
"ARM0",
|
||||
"ARM1",
|
||||
"LEG0",
|
||||
"LEG1",
|
||||
|
||||
// 64x64 Overlay Parts
|
||||
"HEADWEAR",
|
||||
"JACKET",
|
||||
"SLEEVE0",
|
||||
"SLEEVE1",
|
||||
"WAIST",
|
||||
"PANTS0",
|
||||
"PANTS1",
|
||||
|
||||
// Armor Parts
|
||||
"BODYARMOR",
|
||||
"ARMARMOR0",
|
||||
"ARMARMOR1",
|
||||
"BELT",
|
||||
"LEGGING0",
|
||||
"LEGGING1",
|
||||
"SOCK0",
|
||||
"SOCK1",
|
||||
"BOOT0",
|
||||
"BOOT1"
|
||||
};
|
||||
|
||||
private static readonly string[] ValidModelOffsetTypes = new string[]
|
||||
{
|
||||
// Body Offsets
|
||||
"HEAD",
|
||||
"BODY",
|
||||
"ARM0",
|
||||
"ARM1",
|
||||
"LEG0",
|
||||
"LEG1",
|
||||
|
||||
// Armor Offsets
|
||||
"HELMET",
|
||||
"CHEST", "BODYARMOR",
|
||||
"SHOULDER0", "ARMARMOR0",
|
||||
"SHOULDER1", "ARMARMOR0",
|
||||
"BELT",
|
||||
"LEGGING0",
|
||||
"LEGGING1",
|
||||
"SOCK0", "BOOT0",
|
||||
"SOCK1", "BOOT1",
|
||||
|
||||
"TOOL0",
|
||||
"TOOL1",
|
||||
};
|
||||
|
||||
List<SkinBOX> modelBoxes = new List<SkinBOX>();
|
||||
List<ModelOffset> modelOffsets = new List<ModelOffset>();
|
||||
|
||||
private class ModelOffset
|
||||
{
|
||||
public string Name;
|
||||
public float YOffset;
|
||||
|
||||
public ModelOffset(string name, float yOffset)
|
||||
{
|
||||
Name = name;
|
||||
YOffset = yOffset;
|
||||
}
|
||||
public (string, string) ToProperty()
|
||||
{
|
||||
string value = $"{Name} Y {YOffset}";
|
||||
return ("OFFSET", value.Replace(',','.'));
|
||||
}
|
||||
}
|
||||
|
||||
public generateModel(PckFileData file)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
_file = file;
|
||||
if (_file.Size > 0)
|
||||
{
|
||||
uvPictureBox.Image = renderer3D1.Texture = _file.GetTexture();
|
||||
}
|
||||
comboParent.Items.Clear();
|
||||
comboParent.Items.AddRange(ValidModelBoxTypes);
|
||||
LoadModelData(file.Properties);
|
||||
}
|
||||
|
||||
private static readonly Regex sWhitespace = new Regex(@"\s+");
|
||||
public static string ReplaceWhitespace(string input, string replacement)
|
||||
{
|
||||
return sWhitespace.Replace(input, replacement);
|
||||
}
|
||||
|
||||
private void LoadModelData(PckFileProperties properties)
|
||||
{
|
||||
renderer3D1.ANIM = properties.GetPropertyValue("ANIM", SkinANIM.FromString);
|
||||
var boxProperties = properties.GetProperties("BOX");
|
||||
var data = boxProperties.Select(kv => SkinBOX.FromString(kv.Value));
|
||||
listViewBoxes.Items.AddRange(data.Select(box => new ListViewItem(box.ToString())).ToArray());
|
||||
renderer3D1.ModelData.AddRange(data);
|
||||
renderer3D1.UploadModelData();
|
||||
|
||||
properties.GetProperties("OFFSET").All(kv => {
|
||||
string[] offset = ReplaceWhitespace(kv.Value, ",").TrimEnd('\n', '\r', ' ').Split(',');
|
||||
if (offset.Length < 3)
|
||||
return false;
|
||||
string name = offset[0];
|
||||
if (offset[1] != "Y")
|
||||
return false;
|
||||
float value = float.Parse(offset[2]);
|
||||
if (ValidModelOffsetTypes.Contains(name))
|
||||
{
|
||||
modelOffsets.Add(new ModelOffset(name, value));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
UpdateListView();
|
||||
}
|
||||
|
||||
//Rename model part/item
|
||||
private void listView1_DoubleClick_1(object sender, EventArgs e)
|
||||
{
|
||||
listViewBoxes.SelectedItems[0].BeginEdit();
|
||||
}
|
||||
|
||||
private void GenerateUVTextureMap()
|
||||
{
|
||||
Random rng = new Random();
|
||||
using (Graphics graphics = Graphics.FromImage(uvPictureBox.Image))
|
||||
{
|
||||
graphics.ApplyConfig(_graphicsConfig);
|
||||
foreach (var part in modelBoxes)
|
||||
{
|
||||
float width = part.Size.X * 2;
|
||||
float height = part.Size.Y * 2;
|
||||
float length = part.Size.Z * 2;
|
||||
float u = part.UV.X * 2;
|
||||
float v = part.UV.Y * 2;
|
||||
int argb = rng.Next(-16777216, -1); // 0xFF000000 - 0xFFFFFFFF
|
||||
var color = Color.FromArgb(argb);
|
||||
Brush brush = new SolidBrush(color);
|
||||
graphics.FillRectangle(brush, u + length, v, width, length);
|
||||
graphics.FillRectangle(brush, u + length + width, v, width, length);
|
||||
graphics.FillRectangle(brush, u, length + v, length, height);
|
||||
graphics.FillRectangle(brush, u + length, v + length, width, height);
|
||||
graphics.FillRectangle(brush, u + length + width, v + length, width, height);
|
||||
graphics.FillRectangle(brush, u + length + width * 2, v + length, length, height);
|
||||
}
|
||||
}
|
||||
uvPictureBox.Invalidate();
|
||||
}
|
||||
|
||||
private void DrawGuideLines(Graphics g)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
//Point center = new Point(displayBox.Height / 2, displayBox.Width / 2);
|
||||
//int headbodyY = center.Y + 25; //25
|
||||
//int legY = center.Y + 85; // - 80;
|
||||
//bool isSide = direction == ViewDirection.left || direction == ViewDirection.right;
|
||||
//if (!isSide)
|
||||
//{
|
||||
// g.DrawLine(Pens.Red, 0, headbodyY + float.Parse(offsetHead.Text) * 5, displayBox.Width, headbodyY + float.Parse(offsetHead.Text) * 5);
|
||||
// g.DrawLine(Pens.Green, 0, headbodyY + float.Parse(offsetBody.Text) * 5, displayBox.Width, headbodyY + float.Parse(offsetBody.Text) * 5);
|
||||
// g.DrawLine(Pens.Blue, 0, headbodyY + float.Parse(offsetArms.Text) * 5, displayBox.Width, headbodyY + float.Parse(offsetArms.Text) * 5);
|
||||
// g.DrawLine(Pens.Purple, 0, legY + float.Parse(offsetLegs.Text) * 5, displayBox.Width, legY + float.Parse(offsetLegs.Text) * 5);
|
||||
//}
|
||||
//g.DrawLine(Pens.Red, center.X, 0, center.X, displayBox.Height);
|
||||
//g.DrawLine(Pens.Blue, center.X + 30, 0, center.X + 30, displayBox.Height);
|
||||
//g.DrawLine(Pens.Blue, center.X - 30, 0, center.X - 30, displayBox.Height);
|
||||
//g.DrawLine(Pens.Purple, center.X - 10, 0, center.X - 10, displayBox.Height);
|
||||
//g.DrawLine(Pens.Purple, center.X + 10, 0, center .X + 10, displayBox.Height);
|
||||
}
|
||||
|
||||
private void DrawArmorOffsets(Graphics g)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
//int centerPointHeight = displayBox.Height / 2;
|
||||
//int centerPointWidth = displayBox.Width / 2;
|
||||
//int headbodyY = centerPointHeight + 25; //25
|
||||
//int armY = centerPointHeight + 35; // - 60;
|
||||
//int legY = centerPointHeight + 85; // - 80;
|
||||
//SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(80, 50, 50, 75));
|
||||
//g.FillRectangle(semiTransBrush, centerPointWidth, (float)(headbodyY - 40 /*+ offsetHelmet.Value * 5*/), 40, 40); // Helmet
|
||||
//bool isSide = direction == ViewDirection.left || direction == ViewDirection.right;
|
||||
//if (isSide)
|
||||
//{
|
||||
// g.FillRectangle(semiTransBrush, centerPointWidth - 10, headbodyY, 20, 60); // Chest
|
||||
// g.FillRectangle(semiTransBrush, centerPointWidth - 10, (float)(legY + 40 /*+ offsetBoots.Value * 5*/), 20, 20); // Boots
|
||||
// g.FillRectangle(semiTransBrush, centerPointWidth - 10, (float)(legY /*+ offsetPants.Value * 5*/), 20, 40); // Pants
|
||||
// g.FillRectangle(semiTransBrush, centerPointWidth - 5, (float)(armY + 45 /*+ offsetTool.Value * 5*/), 10, 10); // Tools
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// g.FillRectangle(semiTransBrush, centerPointWidth - 20, headbodyY, 40, 60); // Chest
|
||||
// g.FillRectangle(semiTransBrush, centerPointWidth - 35, (float)(armY + 45 /*+ offsetTool.Value * 5*/), 10, 10); // Tool0
|
||||
// g.FillRectangle(semiTransBrush, centerPointWidth + 25, (float)(armY + 45 /*+ offsetTool.Value * 5*/), 10, 10); // Tool1
|
||||
// g.FillRectangle(semiTransBrush, centerPointWidth - 20, (float)(legY /*+ offsetPants.Value * 5*/), 20, 40); // Pants0
|
||||
// g.FillRectangle(semiTransBrush, centerPointWidth, (float)(legY /*+ offsetPants.Value * 5*/), 20, 40); // Pants1
|
||||
// g.FillRectangle(semiTransBrush, centerPointWidth - 20, (float)(legY + 40 /*+ offsetBoots.Value * 5*/), 20, 20); // Boot0
|
||||
// g.FillRectangle(semiTransBrush, centerPointWidth, (float)(legY + 40 /*+ offsetBoots.Value * 5*/), 20, 20); // Boot1
|
||||
//}
|
||||
|
||||
}
|
||||
|
||||
private void generateModel_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (Screen.PrimaryScreen.Bounds.Height >= 780 && Screen.PrimaryScreen.Bounds.Width >= 1080) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private void createToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
modelBoxes.Add(SkinBOX.Empty);
|
||||
UpdateListView();
|
||||
}
|
||||
|
||||
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
changeColorToolStripMenuItem.Visible = false;
|
||||
if (listViewBoxes.SelectedItems.Count != 0 && listViewBoxes.SelectedItems[0].Tag is SkinBOX)
|
||||
{
|
||||
changeColorToolStripMenuItem.Visible = true;
|
||||
var part = listViewBoxes.SelectedItems[0].Tag as SkinBOX;
|
||||
//graphics.DrawRectangle(Pens.Yellow, x + (float)double.Parse(this.selected.SubItems[3].Text) * 5 - 1, y + (float)double.Parse(this.selected.SubItems[2].Text) * 5 - 1, (float)double.Parse(this.selected.SubItems[6].Text) * 5 + 2, (float)double.Parse(this.selected.SubItems[5].Text) * 5 + 2);
|
||||
//graphics.DrawRectangle(Pens.Black, x + (float)double.Parse(this.selected.SubItems[3].Text) * 5, y + (float)double.Parse(this.selected.SubItems[2].Text) * 5, (float)double.Parse(this.selected.SubItems[6].Text) * 5, (float)double.Parse(this.selected.SubItems[5].Text) * 5);
|
||||
comboParent.Text = part.Type;
|
||||
PosXUpDown.Value = (decimal)part.Pos.X;
|
||||
PosYUpDown.Value = (decimal)part.Pos.Y;
|
||||
PosZUpDown.Value = (decimal)part.Pos.Z;
|
||||
SizeXUpDown.Value = (decimal)part.Size.X;
|
||||
SizeYUpDown.Value = (decimal)part.Size.Y;
|
||||
SizeZUpDown.Value = (decimal)part.Size.Z;
|
||||
TextureXUpDown.Value = (decimal)part.UV.X;
|
||||
TextureYUpDown.Value = (decimal)part.UV.Y;
|
||||
}
|
||||
}
|
||||
|
||||
//Changes Item Model Class
|
||||
private void comboParent_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (listViewBoxes.SelectedItems.Count != 0 &&
|
||||
listViewBoxes.SelectedItems[0].Tag is SkinBOX part)
|
||||
{
|
||||
part.Type = comboParent.Text;
|
||||
buttonIMPORT.Enabled = true;
|
||||
buttonEXPORT.Enabled = true;
|
||||
SizeXUpDown.Enabled = true;
|
||||
SizeYUpDown.Enabled = true;
|
||||
SizeZUpDown.Enabled = true;
|
||||
PosXUpDown.Enabled = true;
|
||||
PosYUpDown.Enabled = true;
|
||||
PosZUpDown.Enabled = true;
|
||||
TextureXUpDown.Enabled = true;
|
||||
TextureYUpDown.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void SizeXUpDown_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (listViewBoxes.SelectedItems.Count != 0 &&
|
||||
listViewBoxes.SelectedItems[0].Tag is SkinBOX part)
|
||||
{
|
||||
part.Size.X = (float)SizeXUpDown.Value;
|
||||
}
|
||||
UpdateListView();
|
||||
}
|
||||
|
||||
private void SizeYUpDown_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (listViewBoxes.SelectedItems.Count != 0 &&
|
||||
listViewBoxes.SelectedItems[0].Tag is SkinBOX part)
|
||||
{
|
||||
part.Size.Y = (float)SizeYUpDown.Value;
|
||||
}
|
||||
UpdateListView();
|
||||
}
|
||||
|
||||
private void SizeZUpDown_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (listViewBoxes.SelectedItems.Count != 0 &&
|
||||
listViewBoxes.SelectedItems[0].Tag is SkinBOX part)
|
||||
{
|
||||
part.Size.Z = (float)SizeZUpDown.Value;
|
||||
}
|
||||
UpdateListView();
|
||||
}
|
||||
|
||||
private void PosXUpDown_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (listViewBoxes.SelectedItems.Count != 0 &&
|
||||
listViewBoxes.SelectedItems[0].Tag is SkinBOX part)
|
||||
{
|
||||
part.Pos.X = (float)PosXUpDown.Value;
|
||||
}
|
||||
UpdateListView();
|
||||
}
|
||||
|
||||
private void PosYUpDown_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (listViewBoxes.SelectedItems.Count != 0 &&
|
||||
listViewBoxes.SelectedItems[0].Tag is SkinBOX part)
|
||||
{
|
||||
part.Pos.Y = (float)PosYUpDown.Value;
|
||||
}
|
||||
UpdateListView();
|
||||
}
|
||||
|
||||
private void PosZUpDown_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (listViewBoxes.SelectedItems.Count != 0 &&
|
||||
listViewBoxes.SelectedItems[0].Tag is SkinBOX part)
|
||||
{
|
||||
part.Pos.Z = (float)PosZUpDown.Value;
|
||||
}
|
||||
UpdateListView();
|
||||
}
|
||||
|
||||
//Sets Texture X-Offset
|
||||
private void TextureXUpDown_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (listViewBoxes.SelectedItems.Count != 0 &&
|
||||
listViewBoxes.SelectedItems[0].Tag is SkinBOX part)
|
||||
{
|
||||
part.UV.X = (int)TextureXUpDown.Value;
|
||||
}
|
||||
UpdateListView();
|
||||
}
|
||||
|
||||
//Sets texture Y-Offset
|
||||
private void TextureYUpDown_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (listViewBoxes.SelectedItems.Count != 0 &&
|
||||
listViewBoxes.SelectedItems[0].Tag is SkinBOX part)
|
||||
{
|
||||
part.UV.Y = (int)TextureYUpDown.Value;
|
||||
}
|
||||
UpdateListView();
|
||||
}
|
||||
|
||||
//Export Current Skin Texture
|
||||
private void buttonEXPORT_Click(object sender, EventArgs e)
|
||||
{
|
||||
Bitmap bitmap = new Bitmap(uvPictureBox.Image, 64, 64);
|
||||
using SaveFileDialog saveFileDialog = new SaveFileDialog();
|
||||
saveFileDialog.Filter = "PNG Image Files | *.png";
|
||||
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
bitmap.Save(saveFileDialog.FileName, ImageFormat.Png);
|
||||
}
|
||||
}
|
||||
|
||||
//Imports Skin Texture
|
||||
private void buttonIMPORT_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog openFileDialog = new OpenFileDialog();
|
||||
openFileDialog.Filter = "PNG Image Files | *.png";
|
||||
openFileDialog.Title = "Select Skin Texture";
|
||||
|
||||
if (openFileDialog.ShowDialog() == DialogResult.OK) // skins can only be a 1:1 ratio (base 64x64) or a 2:1 ratio (base 64x32)
|
||||
{
|
||||
using (var img = Image.FromFile(openFileDialog.FileName))
|
||||
{
|
||||
if ((img.Width == img.Height || img.Height == img.Width / 2))
|
||||
{
|
||||
generateTextureCheckBox.Checked = false;
|
||||
using (Graphics graphics = Graphics.FromImage(uvPictureBox.Image))
|
||||
{
|
||||
graphics.ApplyConfig(_graphicsConfig);
|
||||
graphics.DrawImage(img, 0, 0, img.Width, img.Height);
|
||||
}
|
||||
uvPictureBox.Invalidate();
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(this, "Not a valid skin file", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Creates Model Data and Finalizes
|
||||
private void buttonDone_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach (var part in modelBoxes)
|
||||
{
|
||||
_file.Properties.Add("BOX", part);
|
||||
}
|
||||
var img = new Bitmap(renderer3D1.Size.Width, renderer3D1.Size.Height);
|
||||
renderer3D1.DrawToBitmap(img, renderer3D1.Bounds);
|
||||
_previewImage = img;
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
// Trigger Dialog to select model part/item color
|
||||
private void listView1_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
ColorDialog colorDialog = new ColorDialog();
|
||||
if (colorDialog.ShowDialog() == DialogResult.OK)
|
||||
listViewBoxes.SelectedItems[0].ForeColor = colorDialog.Color;
|
||||
}
|
||||
|
||||
//Re-renders head with updated x-offset
|
||||
private void offsetHead_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//Re-renders body with updated x-offset
|
||||
private void offsetBody_TextAlignChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//Loads in model template(Steve)
|
||||
private void buttonTemplate_Click(object sender, EventArgs e)
|
||||
{
|
||||
modelBoxes.Add(SkinBOX.FromString("HEAD -4 -8 -4 8 8 8 0 0 0 0 0"));
|
||||
modelBoxes.Add(SkinBOX.FromString("BODY -4 0 -2 8 12 4 16 16 0 0 0"));
|
||||
modelBoxes.Add(SkinBOX.FromString("ARM0 -3 -2 -2 4 12 4 40 16 0 0 0"));
|
||||
modelBoxes.Add(SkinBOX.FromString("ARM1 -1 -2 -2 4 12 4 40 16 0 1 0"));
|
||||
modelBoxes.Add(SkinBOX.FromString("LEG0 -2 0 -2 4 12 4 0 16 0 0 0"));
|
||||
modelBoxes.Add(SkinBOX.FromString("LEG1 -2 0 -2 4 12 4 0 16 0 1 0"));
|
||||
comboParent.Enabled = true;
|
||||
UpdateListView();
|
||||
}
|
||||
|
||||
private void UpdateListView()
|
||||
{
|
||||
listViewBoxes.Items.Clear();
|
||||
foreach (var part in modelBoxes)
|
||||
{
|
||||
ListViewItem listViewItem = new ListViewItem(part.Type);
|
||||
listViewItem.Tag = part;
|
||||
listViewItem.SubItems.Add(new ListViewItem.ListViewSubItem(listViewItem, part.Pos.X.ToString()));
|
||||
listViewItem.SubItems.Add(new ListViewItem.ListViewSubItem(listViewItem, part.Pos.Y.ToString()));
|
||||
listViewItem.SubItems.Add(new ListViewItem.ListViewSubItem(listViewItem, part.Pos.Z.ToString()));
|
||||
listViewItem.SubItems.Add(new ListViewItem.ListViewSubItem(listViewItem, part.Size.X.ToString()));
|
||||
listViewItem.SubItems.Add(new ListViewItem.ListViewSubItem(listViewItem, part.Size.Y.ToString()));
|
||||
listViewItem.SubItems.Add(new ListViewItem.ListViewSubItem(listViewItem, part.Size.Z.ToString()));
|
||||
listViewItem.SubItems.Add(new ListViewItem.ListViewSubItem(listViewItem, part.UV.X.ToString()));
|
||||
listViewItem.SubItems.Add(new ListViewItem.ListViewSubItem(listViewItem, part.UV.Y.ToString()));
|
||||
listViewBoxes.Items.Add(listViewItem);
|
||||
}
|
||||
}
|
||||
|
||||
// Exports model as csm file
|
||||
private void buttonExportModel_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveFileDialog saveFileDialog = new SaveFileDialog();
|
||||
saveFileDialog.Filter = "Custom Skin Model File | *.CSM";
|
||||
if (saveFileDialog.ShowDialog() != DialogResult.OK)
|
||||
return;
|
||||
string contents = "";
|
||||
foreach (ListViewItem listViewItem in listViewBoxes.Items)
|
||||
{
|
||||
string str = "";
|
||||
foreach (ListViewItem.ListViewSubItem subItem in listViewItem.SubItems)
|
||||
{
|
||||
if (subItem.Text != "unchecked")
|
||||
str = str + subItem.Text + Environment.NewLine;
|
||||
}
|
||||
contents += (listViewItem.Text + Environment.NewLine + listViewItem.Tag) + Environment.NewLine + str;
|
||||
}
|
||||
|
||||
File.WriteAllText(saveFileDialog.FileName, contents);
|
||||
}
|
||||
|
||||
// Imports model from csm file
|
||||
private void buttonImportModel_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog openFileDialog = new OpenFileDialog();
|
||||
openFileDialog.Filter = "Custom Skin Model File | *.CSM";
|
||||
openFileDialog.Title = "Select Custom Skin Model File";
|
||||
if (MessageBox.Show("Import custom model project file? Your current work will be lost!", "", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1) == DialogResult.Yes && openFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
listViewBoxes.Items.Clear();
|
||||
modelBoxes.Clear();
|
||||
StreamReader reader = new StreamReader(openFileDialog.FileName);
|
||||
while (!reader.EndOfStream)
|
||||
{
|
||||
reader.ReadLine();
|
||||
string part = reader.ReadLine();
|
||||
reader.ReadLine();
|
||||
var PosX = reader.ReadLine();
|
||||
var PosY = reader.ReadLine();
|
||||
var PosZ = reader.ReadLine();
|
||||
var SizeX = reader.ReadLine();
|
||||
var SizeY = reader.ReadLine();
|
||||
var SizeZ = reader.ReadLine();
|
||||
var UvX = reader.ReadLine();
|
||||
var UvY = reader.ReadLine();
|
||||
modelBoxes.Add(SkinBOX.FromString($"{part} {PosX} {PosY} {PosZ} {SizeX} {SizeY} {SizeZ} {UvX} {UvY}"));
|
||||
}
|
||||
|
||||
}
|
||||
comboParent.Enabled = true;
|
||||
UpdateListView();
|
||||
}
|
||||
|
||||
private void cloneToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
ListViewItem listViewItem = new ListViewItem();
|
||||
var selected = listViewBoxes.SelectedItems[0];
|
||||
listViewItem.Text = selected.Text;
|
||||
listViewItem.Tag = selected.Tag;
|
||||
int num = 0;
|
||||
foreach (ListViewItem.ListViewSubItem subItem in selected.SubItems)
|
||||
{
|
||||
if (num > 0)
|
||||
listViewItem.SubItems.Add(subItem.Text);
|
||||
++num;
|
||||
}
|
||||
listViewBoxes.Items.Add(listViewItem);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
MessageBox.Show("Please Select a Part");
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listViewBoxes.SelectedItems[0] == null)
|
||||
return;
|
||||
listViewBoxes.SelectedItems[0].Remove();
|
||||
}
|
||||
|
||||
private void changeColorToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
ColorDialog colorDialog = new ColorDialog();
|
||||
if (colorDialog.ShowDialog() == DialogResult.OK)
|
||||
listViewBoxes.SelectedItems[0].ForeColor = colorDialog.Color;
|
||||
}
|
||||
|
||||
//Re-renders tool with updated x-offset
|
||||
private void offsetTool_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//Re-renders helmet with updated x-offset
|
||||
private void offsetHelmet_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//Re-renders pants with updated x-offset
|
||||
private void offsetPants_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//Re-renders leggings with updated x-offset
|
||||
private void offsetLeggings_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//Re-renders boots with updated x-offset
|
||||
private void offsetBoots_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//Item Selection
|
||||
private void listView1_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listViewBoxes.SelectedItems.Count != 0 && listViewBoxes.SelectedItems[0] != null &&
|
||||
listViewBoxes.SelectedItems[0].Tag is SkinBOX part)
|
||||
{
|
||||
comboParent.Text = part.Type;
|
||||
PosXUpDown.Value = (decimal)part.Pos.X;
|
||||
PosYUpDown.Value = (decimal)part.Pos.Y;
|
||||
PosZUpDown.Value = (decimal)part.Pos.Z;
|
||||
SizeXUpDown.Value = (decimal)part.Size.X;
|
||||
SizeYUpDown.Value = (decimal)part.Size.Y;
|
||||
SizeZUpDown.Value = (decimal)part.Size.Z;
|
||||
TextureXUpDown.Value = (decimal)part.UV.X;
|
||||
TextureYUpDown.Value = (decimal)part.UV.Y;
|
||||
SizeXUpDown.Enabled = true;
|
||||
SizeYUpDown.Enabled = true;
|
||||
SizeZUpDown.Enabled = true;
|
||||
PosXUpDown.Enabled = true;
|
||||
PosYUpDown.Enabled = true;
|
||||
PosZUpDown.Enabled = true;
|
||||
TextureXUpDown.Enabled = true;
|
||||
TextureYUpDown.Enabled = true;
|
||||
comboParent.Enabled = true;
|
||||
return;
|
||||
}
|
||||
SizeXUpDown.Enabled = false;
|
||||
SizeYUpDown.Enabled = false;
|
||||
SizeZUpDown.Enabled = false;
|
||||
PosXUpDown.Enabled = false;
|
||||
PosYUpDown.Enabled = false;
|
||||
PosZUpDown.Enabled = false;
|
||||
TextureXUpDown.Enabled = false;
|
||||
TextureYUpDown.Enabled = false;
|
||||
comboParent.Enabled = false;
|
||||
|
||||
}
|
||||
|
||||
//currently scrapped
|
||||
private void generateModel_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
/*if (MessageBox.Show("You done here?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
|
||||
{
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
e.Cancel = false;*/
|
||||
}
|
||||
|
||||
//Del stuff using key
|
||||
private void delStuffUsingDelKey(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Delete && listViewBoxes.SelectedItems.Count != 0 &&
|
||||
listViewBoxes.SelectedItems[0].Tag is SkinBOX part)
|
||||
{
|
||||
if (modelBoxes.Remove(part))
|
||||
listViewBoxes.SelectedItems[0].Remove();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void generateModel_SizeChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// TODO
|
||||
private void OpenJSONButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog openFileDialog = new OpenFileDialog();
|
||||
openFileDialog.Filter = "JSON Model File | *.JSON";
|
||||
openFileDialog.Title = "Select JSON Model File";
|
||||
if (MessageBox.Show("Import custom model project file? Your current work will be lost!", "", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1) == DialogResult.Yes && openFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
listViewBoxes.Items.Clear();
|
||||
string str1 = JSONToCSM(openFileDialog.FileName);
|
||||
int x = 0;
|
||||
foreach (string str2 in str1.Split("\n\r".ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
|
||||
++x;
|
||||
int y = x / 11;
|
||||
ListView listView = new ListView();
|
||||
int num3 = 0;
|
||||
do
|
||||
{
|
||||
listView.Items.Add("BOX");
|
||||
++num3;
|
||||
}
|
||||
while (num3 < y);
|
||||
|
||||
|
||||
foreach (ListViewItem current in listView.Items)
|
||||
{
|
||||
ListViewItem listViewItem = new ListViewItem();
|
||||
int num4 = 0;
|
||||
foreach (string text in str1.Split("\n\r".ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
|
||||
{
|
||||
++num4;
|
||||
if (num4 == 1 + 11 * current.Index)
|
||||
listViewItem.Text = text;
|
||||
else if (num4 == 2 + 11 * current.Index)
|
||||
listViewItem.Tag = text;
|
||||
else if (num4 == 4 + 11 * current.Index)
|
||||
listViewItem.SubItems.Add(text);
|
||||
else if (num4 == 5 + 11 * current.Index)
|
||||
listViewItem.SubItems.Add(text);
|
||||
else if (num4 == 6 + 11 * current.Index)
|
||||
listViewItem.SubItems.Add(text);
|
||||
else if (num4 == 7 + 11 * current.Index)
|
||||
listViewItem.SubItems.Add(text);
|
||||
else if (num4 == 8 + 11 * current.Index)
|
||||
listViewItem.SubItems.Add(text);
|
||||
else if (num4 == 9 + 11 * current.Index)
|
||||
listViewItem.SubItems.Add(text);
|
||||
else if (num4 == 10 + 11 * current.Index)
|
||||
listViewItem.SubItems.Add(text);
|
||||
else if (num4 == 11 + 11 * current.Index)
|
||||
{
|
||||
listViewItem.SubItems.Add(text);
|
||||
listViewBoxes.Items.Add(listViewItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[Obsolete("Just whyyyyy")]
|
||||
public string JSONToCSM(string InputFilePath)
|
||||
{
|
||||
CSMJObject jsonDe = JsonConvert.DeserializeObject<CSMJObject>(File.ReadAllText(InputFilePath));
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach (CSMJObjectGroup group in jsonDe.Groups)
|
||||
{
|
||||
string PARENT = group.Name;
|
||||
foreach (int i in group.children)
|
||||
{
|
||||
string name = jsonDe.Elements[i].Name;
|
||||
float PosX = jsonDe.Elements[i].from[0] + group.origin[0];
|
||||
float PosY = jsonDe.Elements[i].from[1] + group.origin[1];
|
||||
float PosZ = jsonDe.Elements[i].from[2] + group.origin[2];
|
||||
float SizeX = jsonDe.Elements[i].to[0] - jsonDe.Elements[i].from[0];
|
||||
float SizeY = jsonDe.Elements[i].to[1] - jsonDe.Elements[i].from[1];
|
||||
float SizeZ = jsonDe.Elements[i].to[2] - jsonDe.Elements[i].from[2];
|
||||
float U = 0;
|
||||
float V = 0;
|
||||
|
||||
sb.AppendLine(name + "\n" + PARENT + "\n" + name + "\n" + PosX + "\n" + PosY + "\n" + PosZ + "\n" + SizeX + "\n" + SizeY + "\n" + SizeZ + "\n" + U + "\n" + V);
|
||||
}
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
private void renderer3D1_TextureChanging(object sender, Rendering.TextureChangingEventArgs e)
|
||||
{
|
||||
uvPictureBox.Image = e.NewTexture;
|
||||
}
|
||||
}
|
||||
|
||||
class CSMJObject
|
||||
{
|
||||
[JsonProperty("credit")]
|
||||
public string Credit { get; set; }
|
||||
|
||||
[JsonProperty("texture_size")]
|
||||
public int[] TextureSize;
|
||||
|
||||
[JsonProperty("elements")]
|
||||
public CSMJObjectElement[] Elements;
|
||||
|
||||
[JsonProperty("groups")]
|
||||
public CSMJObjectGroup[] Groups;
|
||||
}
|
||||
|
||||
class CSMJObjectElement
|
||||
{
|
||||
[JsonProperty("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
public float[] from;
|
||||
public float[] to;
|
||||
}
|
||||
|
||||
class CSMJObjectGroup
|
||||
{
|
||||
[JsonProperty("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
public float[] origin;
|
||||
public int[] children;
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@ namespace PckStudio.Internal
|
||||
{
|
||||
public static readonly SkinBOX Empty = new SkinBOX("HEAD", new Vector3(-4, -8, -4), new Vector3(8), Vector2.Zero);
|
||||
|
||||
public string Type;
|
||||
public string Type { get; set; }
|
||||
public Vector3 Pos;
|
||||
public Vector3 Size;
|
||||
public Vector2 UV;
|
||||
|
||||
@@ -429,7 +429,7 @@ namespace PckStudio
|
||||
{
|
||||
if (file.Properties.HasProperty("BOX"))
|
||||
{
|
||||
using generateModel generate = new generateModel(file);
|
||||
using CustomModelEditor generate = new CustomModelEditor(file);
|
||||
if (generate.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
entryDataTextBox.Text = entryTypeTextBox.Text = string.Empty;
|
||||
|
||||
@@ -396,11 +396,11 @@
|
||||
<Compile Include="MainForm.Designer.cs">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Skins-And-Textures\generateModel.cs">
|
||||
<Compile Include="Forms\Skins-And-Textures\CustomModelEditor.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Skins-And-Textures\generateModel.Designer.cs">
|
||||
<DependentUpon>generateModel.cs</DependentUpon>
|
||||
<Compile Include="Forms\Skins-And-Textures\CustomModelEditor.Designer.cs">
|
||||
<DependentUpon>CustomModelEditor.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Skins-And-Textures\SkinPreview.cs">
|
||||
<SubType>Form</SubType>
|
||||
@@ -571,11 +571,11 @@
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Skins-And-Textures\generateModel.ja.resx">
|
||||
<DependentUpon>generateModel.cs</DependentUpon>
|
||||
<EmbeddedResource Include="Forms\Skins-And-Textures\CustomModelEditor.ja.resx">
|
||||
<DependentUpon>CustomModelEditor.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Skins-And-Textures\generateModel.resx">
|
||||
<DependentUpon>generateModel.cs</DependentUpon>
|
||||
<EmbeddedResource Include="Forms\Skins-And-Textures\CustomModelEditor.resx">
|
||||
<DependentUpon>CustomModelEditor.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Skins-And-Textures\SkinPreview.resx">
|
||||
@@ -735,6 +735,9 @@
|
||||
<PackageReference Include="Newtonsoft.Json">
|
||||
<Version>13.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="OpenTK">
|
||||
<Version>3.3.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="OpenTK.GLControl">
|
||||
<Version>3.3.3</Version>
|
||||
</PackageReference>
|
||||
|
||||
Reference in New Issue
Block a user