mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-05-24 00:55:30 +00:00
SkinRenderer - Add support for part offset
This commit is contained in:
54
PCK-Studio/Extensions/SkinBOXExtensions.cs
Normal file
54
PCK-Studio/Extensions/SkinBOXExtensions.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using PckStudio.Internal;
|
||||
|
||||
namespace PckStudio.Extensions
|
||||
{
|
||||
internal static class SkinBOXExtensions
|
||||
{
|
||||
public static GraphicsPath GetUVGraphicsPath(this SkinBOX skinBOX, Vector2 scalingFactor)
|
||||
{
|
||||
var types = new byte[9];
|
||||
var points = new PointF[9];
|
||||
|
||||
types[0] = (byte)PathPointType.Start;
|
||||
types[1] = (byte)PathPointType.Line;
|
||||
types[2] = (byte)PathPointType.Line;
|
||||
types[3] = (byte)PathPointType.Line;
|
||||
types[4] = (byte)PathPointType.Line;
|
||||
types[5] = (byte)PathPointType.Line;
|
||||
types[6] = (byte)PathPointType.Line;
|
||||
types[7] = (byte)PathPointType.Line;
|
||||
types[8] = (byte)PathPointType.Line;
|
||||
|
||||
points[0] = new PointF(skinBOX.UV.X, skinBOX.UV.Y + skinBOX.Size.Z);
|
||||
points[1] = new PointF(skinBOX.UV.X + skinBOX.Size.Z, skinBOX.UV.Y + skinBOX.Size.Z);
|
||||
points[2] = new PointF(skinBOX.UV.X + skinBOX.Size.Z, skinBOX.UV.Y);
|
||||
points[3] = new PointF(skinBOX.UV.X + skinBOX.Size.Z + skinBOX.Size.X * 2, skinBOX.UV.Y);
|
||||
points[4] = new PointF(skinBOX.UV.X + skinBOX.Size.Z + skinBOX.Size.X * 2, skinBOX.UV.Y + skinBOX.Size.Z);
|
||||
points[5] = new PointF(skinBOX.UV.X + skinBOX.Size.Z * 2 + skinBOX.Size.X * 2, skinBOX.UV.Y + skinBOX.Size.Z);
|
||||
points[6] = new PointF(skinBOX.UV.X + skinBOX.Size.Z * 2 + skinBOX.Size.X * 2, skinBOX.UV.Y + skinBOX.Size.Z + skinBOX.Size.Y);
|
||||
points[7] = new PointF(skinBOX.UV.X, skinBOX.UV.Y + skinBOX.Size.Z + skinBOX.Size.Y);
|
||||
points[8] = points[0];
|
||||
|
||||
for (int i = 0; i < points.Length; i++)
|
||||
{
|
||||
points[i] = new PointF(points[i].X * scalingFactor.X, points[i].Y * scalingFactor.Y);
|
||||
}
|
||||
|
||||
return new GraphicsPath(points, types);
|
||||
|
||||
}
|
||||
|
||||
public static GraphicsPath GetUVGraphicsPath(this SkinBOX skinBOX)
|
||||
{
|
||||
return skinBOX.GetUVGraphicsPath(Vector2.One);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,19 +41,6 @@
|
||||
this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.changeColorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
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();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.myTablePanel2 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.offsetArms = new System.Windows.Forms.TextBox();
|
||||
this.label14 = new System.Windows.Forms.Label();
|
||||
this.offsetBody = new System.Windows.Forms.TextBox();
|
||||
this.offsetLegs = new System.Windows.Forms.TextBox();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.offsetHead = new System.Windows.Forms.TextBox();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.buttonEXPORT = new MetroFramework.Controls.MetroButton();
|
||||
this.buttonIMPORT = new MetroFramework.Controls.MetroButton();
|
||||
this.buttonImportModel = new MetroFramework.Controls.MetroButton();
|
||||
@@ -70,18 +57,17 @@
|
||||
this.PosZUpDown = new System.Windows.Forms.NumericUpDown();
|
||||
this.PosYUpDown = new System.Windows.Forms.NumericUpDown();
|
||||
this.PosXUpDown = new System.Windows.Forms.NumericUpDown();
|
||||
this.modelPartListBox = new System.Windows.Forms.ListBox();
|
||||
this.clampToViewCheckbox = new MetroFramework.Controls.MetroCheckBox();
|
||||
this.captureScreenshotButton = new MetroFramework.Controls.MetroButton();
|
||||
this.showToolsCheckBox = new MetroFramework.Controls.MetroCheckBox();
|
||||
this.renderer3D1 = new PckStudio.Rendering.SkinRenderer();
|
||||
this.uvPictureBox = new PckStudio.ToolboxItems.InterpolationPictureBox();
|
||||
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();
|
||||
labelTextureMappingPreview = new System.Windows.Forms.Label();
|
||||
this.contextMenuStrip1.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.tabBody.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
this.myTablePanel2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.SizeXUpDown)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.SizeYUpDown)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.SizeZUpDown)).BeginInit();
|
||||
@@ -161,92 +147,6 @@
|
||||
this.buttonDone.UseSelectable = true;
|
||||
this.buttonDone.Click += new System.EventHandler(this.buttonDone_Click);
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Controls.Add(this.tabBody);
|
||||
this.groupBox1.ForeColor = System.Drawing.Color.White;
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
// tabBody
|
||||
//
|
||||
this.tabBody.Controls.Add(this.tabArmor);
|
||||
this.tabBody.Controls.Add(this.tabPage1);
|
||||
resources.ApplyResources(this.tabBody, "tabBody");
|
||||
this.tabBody.Name = "tabBody";
|
||||
this.tabBody.SelectedIndex = 0;
|
||||
//
|
||||
// tabArmor
|
||||
//
|
||||
this.tabArmor.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(17)))), ((int)(((byte)(17)))), ((int)(((byte)(17)))));
|
||||
resources.ApplyResources(this.tabArmor, "tabArmor");
|
||||
this.tabArmor.Name = "tabArmor";
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(17)))), ((int)(((byte)(17)))), ((int)(((byte)(17)))));
|
||||
this.tabPage1.Controls.Add(this.myTablePanel2);
|
||||
resources.ApplyResources(this.tabPage1, "tabPage1");
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
//
|
||||
// myTablePanel2
|
||||
//
|
||||
resources.ApplyResources(this.myTablePanel2, "myTablePanel2");
|
||||
this.myTablePanel2.Controls.Add(this.offsetArms, 1, 3);
|
||||
this.myTablePanel2.Controls.Add(this.label14, 0, 3);
|
||||
this.myTablePanel2.Controls.Add(this.offsetBody, 1, 1);
|
||||
this.myTablePanel2.Controls.Add(this.offsetLegs, 1, 2);
|
||||
this.myTablePanel2.Controls.Add(this.label10, 0, 0);
|
||||
this.myTablePanel2.Controls.Add(this.label13, 0, 2);
|
||||
this.myTablePanel2.Controls.Add(this.offsetHead, 1, 0);
|
||||
this.myTablePanel2.Controls.Add(this.label12, 0, 1);
|
||||
this.myTablePanel2.Name = "myTablePanel2";
|
||||
//
|
||||
// offsetArms
|
||||
//
|
||||
resources.ApplyResources(this.offsetArms, "offsetArms");
|
||||
this.offsetArms.Name = "offsetArms";
|
||||
//
|
||||
// label14
|
||||
//
|
||||
resources.ApplyResources(this.label14, "label14");
|
||||
this.label14.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192)))));
|
||||
this.label14.Name = "label14";
|
||||
//
|
||||
// offsetBody
|
||||
//
|
||||
resources.ApplyResources(this.offsetBody, "offsetBody");
|
||||
this.offsetBody.Name = "offsetBody";
|
||||
//
|
||||
// offsetLegs
|
||||
//
|
||||
resources.ApplyResources(this.offsetLegs, "offsetLegs");
|
||||
this.offsetLegs.Name = "offsetLegs";
|
||||
//
|
||||
// label10
|
||||
//
|
||||
resources.ApplyResources(this.label10, "label10");
|
||||
this.label10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
|
||||
this.label10.Name = "label10";
|
||||
//
|
||||
// label13
|
||||
//
|
||||
resources.ApplyResources(this.label13, "label13");
|
||||
this.label13.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(0)))), ((int)(((byte)(64)))));
|
||||
this.label13.Name = "label13";
|
||||
//
|
||||
// offsetHead
|
||||
//
|
||||
resources.ApplyResources(this.offsetHead, "offsetHead");
|
||||
this.offsetHead.Name = "offsetHead";
|
||||
//
|
||||
// label12
|
||||
//
|
||||
resources.ApplyResources(this.label12, "label12");
|
||||
this.label12.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(0)))));
|
||||
this.label12.Name = "label12";
|
||||
//
|
||||
// buttonEXPORT
|
||||
//
|
||||
resources.ApplyResources(this.buttonEXPORT, "buttonEXPORT");
|
||||
@@ -400,12 +300,46 @@
|
||||
-2147483648});
|
||||
this.PosXUpDown.Name = "PosXUpDown";
|
||||
//
|
||||
// modelPartListBox
|
||||
//
|
||||
this.modelPartListBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.modelPartListBox.ContextMenuStrip = this.contextMenuStrip1;
|
||||
this.modelPartListBox.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.modelPartListBox, "modelPartListBox");
|
||||
this.modelPartListBox.Name = "modelPartListBox";
|
||||
this.modelPartListBox.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged);
|
||||
this.modelPartListBox.DoubleClick += new System.EventHandler(this.listBox1_DoubleClick);
|
||||
//
|
||||
// clampToViewCheckbox
|
||||
//
|
||||
resources.ApplyResources(this.clampToViewCheckbox, "clampToViewCheckbox");
|
||||
this.clampToViewCheckbox.Name = "clampToViewCheckbox";
|
||||
this.clampToViewCheckbox.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.clampToViewCheckbox.UseSelectable = true;
|
||||
this.clampToViewCheckbox.CheckedChanged += new System.EventHandler(this.clampToViewCheckbox_CheckedChanged);
|
||||
//
|
||||
// captureScreenshotButton
|
||||
//
|
||||
resources.ApplyResources(this.captureScreenshotButton, "captureScreenshotButton");
|
||||
this.captureScreenshotButton.ForeColor = System.Drawing.Color.White;
|
||||
this.captureScreenshotButton.Name = "captureScreenshotButton";
|
||||
this.captureScreenshotButton.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.captureScreenshotButton.UseSelectable = true;
|
||||
this.captureScreenshotButton.Click += new System.EventHandler(this.captureScreenshotButton_Click);
|
||||
//
|
||||
// showToolsCheckBox
|
||||
//
|
||||
resources.ApplyResources(this.showToolsCheckBox, "showToolsCheckBox");
|
||||
this.showToolsCheckBox.Name = "showToolsCheckBox";
|
||||
this.showToolsCheckBox.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.showToolsCheckBox.UseSelectable = true;
|
||||
//
|
||||
// renderer3D1
|
||||
//
|
||||
resources.ApplyResources(this.renderer3D1, "renderer3D1");
|
||||
this.renderer3D1.ANIM = skinANIM1;
|
||||
this.renderer3D1.BackColor = System.Drawing.Color.DimGray;
|
||||
this.renderer3D1.CameraTarget = ((OpenTK.Vector2)(resources.GetObject("renderer3D1.CameraTarget")));
|
||||
this.renderer3D1.ClampModel = false;
|
||||
this.renderer3D1.Name = "renderer3D1";
|
||||
this.renderer3D1.Texture = null;
|
||||
this.renderer3D1.VSync = true;
|
||||
@@ -414,25 +348,19 @@
|
||||
// uvPictureBox
|
||||
//
|
||||
resources.ApplyResources(this.uvPictureBox, "uvPictureBox");
|
||||
this.uvPictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.uvPictureBox.BackgroundInterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
|
||||
this.uvPictureBox.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
|
||||
this.uvPictureBox.Name = "uvPictureBox";
|
||||
this.uvPictureBox.TabStop = false;
|
||||
//
|
||||
// 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.showToolsCheckBox);
|
||||
this.Controls.Add(this.captureScreenshotButton);
|
||||
this.Controls.Add(this.clampToViewCheckbox);
|
||||
this.Controls.Add(this.modelPartListBox);
|
||||
this.Controls.Add(this.renderer3D1);
|
||||
this.Controls.Add(this.PosZUpDown);
|
||||
this.Controls.Add(this.PosYUpDown);
|
||||
@@ -450,24 +378,18 @@
|
||||
this.Controls.Add(this.buttonImportModel);
|
||||
this.Controls.Add(this.buttonEXPORT);
|
||||
this.Controls.Add(labelTextureMappingPreview);
|
||||
this.Controls.Add(this.uvPictureBox);
|
||||
this.Controls.Add(this.buttonIMPORT);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Controls.Add(label7);
|
||||
this.Controls.Add(this.buttonDone);
|
||||
this.Controls.Add(label3);
|
||||
this.Controls.Add(label5);
|
||||
this.Controls.Add(this.uvPictureBox);
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "CustomModelEditor";
|
||||
this.Style = MetroFramework.MetroColorStyle.Silver;
|
||||
this.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.generateModel_FormClosing);
|
||||
this.contextMenuStrip1.ResumeLayout(false);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.tabBody.ResumeLayout(false);
|
||||
this.tabPage1.ResumeLayout(false);
|
||||
this.myTablePanel2.ResumeLayout(false);
|
||||
this.myTablePanel2.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.SizeXUpDown)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.SizeYUpDown)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.SizeZUpDown)).EndInit();
|
||||
@@ -495,19 +417,6 @@
|
||||
private PckStudio.ToolboxItems.InterpolationPictureBox uvPictureBox;
|
||||
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;
|
||||
private System.Windows.Forms.TableLayoutPanel myTablePanel2;
|
||||
private System.Windows.Forms.TextBox offsetArms;
|
||||
private System.Windows.Forms.Label label14;
|
||||
private System.Windows.Forms.TextBox offsetBody;
|
||||
private System.Windows.Forms.TextBox offsetLegs;
|
||||
private System.Windows.Forms.Label label10;
|
||||
private System.Windows.Forms.Label label13;
|
||||
private System.Windows.Forms.TextBox offsetHead;
|
||||
private System.Windows.Forms.Label label12;
|
||||
private System.Windows.Forms.TabPage tabArmor;
|
||||
private MetroFramework.Controls.MetroCheckBox generateTextureCheckBox;
|
||||
private MetroFramework.Controls.MetroCheckBox checkGuide;
|
||||
private MetroFramework.Controls.MetroCheckBox checkBoxArmor;
|
||||
@@ -520,6 +429,9 @@
|
||||
private System.Windows.Forms.NumericUpDown PosYUpDown;
|
||||
private System.Windows.Forms.NumericUpDown PosXUpDown;
|
||||
private Rendering.SkinRenderer renderer3D1;
|
||||
private System.Windows.Forms.ListBox listBox1;
|
||||
private System.Windows.Forms.ListBox modelPartListBox;
|
||||
private MetroFramework.Controls.MetroCheckBox clampToViewCheckbox;
|
||||
private MetroFramework.Controls.MetroButton captureScreenshotButton;
|
||||
private MetroFramework.Controls.MetroCheckBox showToolsCheckBox;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
@@ -11,11 +12,11 @@ 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
|
||||
@@ -33,82 +34,8 @@ namespace PckStudio.Forms
|
||||
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();
|
||||
@@ -116,42 +43,22 @@ namespace PckStudio.Forms
|
||||
_file = file;
|
||||
if (_file.Size > 0)
|
||||
{
|
||||
uvPictureBox.Image = renderer3D1.Texture = _file.GetTexture();
|
||||
uvPictureBox.BackgroundImage = 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";
|
||||
modelPartListBox.DataSource = renderer3D1.ModelData;
|
||||
modelPartListBox.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;
|
||||
});
|
||||
Array.ForEach(properties.GetProperties("OFFSET"), kv => renderer3D1.SetPartOffset(ModelOffset.FromString(kv.Value)));
|
||||
}
|
||||
|
||||
private void GenerateUVTextureMap()
|
||||
@@ -191,7 +98,7 @@ namespace PckStudio.Forms
|
||||
//Export Current Skin Texture
|
||||
private void buttonEXPORT_Click(object sender, EventArgs e)
|
||||
{
|
||||
Bitmap bitmap = new Bitmap(uvPictureBox.Image, 64, 64);
|
||||
Bitmap bitmap = new Bitmap(uvPictureBox.BackgroundImage, 64, 64);
|
||||
using SaveFileDialog saveFileDialog = new SaveFileDialog();
|
||||
saveFileDialog.Filter = "PNG Image Files | *.png";
|
||||
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
||||
@@ -214,7 +121,7 @@ namespace PckStudio.Forms
|
||||
if ((img.Width == img.Height || img.Height == img.Width / 2))
|
||||
{
|
||||
generateTextureCheckBox.Checked = false;
|
||||
using (Graphics graphics = Graphics.FromImage(uvPictureBox.Image))
|
||||
using (Graphics graphics = Graphics.FromImage(uvPictureBox.BackgroundImage))
|
||||
{
|
||||
graphics.ApplyConfig(_graphicsConfig);
|
||||
graphics.DrawImage(img, 0, 0, img.Width, img.Height);
|
||||
@@ -231,6 +138,7 @@ namespace PckStudio.Forms
|
||||
|
||||
private void buttonDone_Click(object sender, EventArgs e)
|
||||
{
|
||||
_file.Properties.RemoveAll(kv => kv.Key == "BOX");
|
||||
foreach (var part in renderer3D1.ModelData)
|
||||
{
|
||||
_file.Properties.Add("BOX", part);
|
||||
@@ -240,7 +148,6 @@ namespace PckStudio.Forms
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
// Exports model as csm file
|
||||
private void buttonExportModel_Click(object sender, EventArgs e)
|
||||
{
|
||||
//SaveFileDialog saveFileDialog = new SaveFileDialog();
|
||||
@@ -292,31 +199,15 @@ namespace PckStudio.Forms
|
||||
|
||||
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");
|
||||
//}
|
||||
if (modelPartListBox.SelectedItem is SkinBOX box)
|
||||
{
|
||||
renderer3D1.ModelData.Add((SkinBOX)box.Clone());
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listBox1.SelectedItem is SkinBOX box)
|
||||
if (modelPartListBox.SelectedItem is SkinBOX box)
|
||||
{
|
||||
renderer3D1.ModelData.Remove(box);
|
||||
}
|
||||
@@ -340,7 +231,6 @@ namespace PckStudio.Forms
|
||||
//{
|
||||
// if (modelBoxes.Remove(part))
|
||||
// listViewBoxes.SelectedItems[0].Remove();
|
||||
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -431,25 +321,51 @@ namespace PckStudio.Forms
|
||||
private void renderer3D1_TextureChanging(object sender, Rendering.TextureChangingEventArgs e)
|
||||
{
|
||||
// TODO: add validation for 64x64 and 64x32
|
||||
uvPictureBox.Image = e.NewTexture;
|
||||
uvPictureBox.BackgroundImage = e.NewTexture;
|
||||
}
|
||||
|
||||
private void listBox1_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
if (listBox1.SelectedItem is SkinBOX box)
|
||||
if (modelPartListBox.SelectedItem is SkinBOX box)
|
||||
{
|
||||
var boxEditor = new BoxEditor(box, false);
|
||||
if (boxEditor.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
renderer3D1.ModelData[listBox1.SelectedIndex] = boxEditor.Result;
|
||||
listBox1.Update();
|
||||
renderer3D1.ModelData[modelPartListBox.SelectedIndex] = boxEditor.Result;
|
||||
modelPartListBox.Update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
//renderer3D1.SelectedIndex = listBox1.SelectedIndex;
|
||||
if (modelPartListBox.SelectedItem is SkinBOX box)
|
||||
{
|
||||
int scale = 3;
|
||||
uvPictureBox.Image = new Bitmap(uvPictureBox.BackgroundImage.Width * scale, uvPictureBox.BackgroundImage.Height * scale);
|
||||
using (Graphics g = Graphics.FromImage(uvPictureBox.Image))
|
||||
{
|
||||
g.DrawPath(new Pen(Color.HotPink, 1f), box.GetUVGraphicsPath(new System.Numerics.Vector2(uvPictureBox.Image.Width / uvPictureBox.BackgroundImage.Width, uvPictureBox.Image.Height / uvPictureBox.BackgroundImage.Height)));
|
||||
}
|
||||
uvPictureBox.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private void clampToViewCheckbox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
renderer3D1.ClampModel = clampToViewCheckbox.Checked;
|
||||
}
|
||||
|
||||
private void captureScreenshotButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
using SaveFileDialog saveFileDialog = new SaveFileDialog()
|
||||
{
|
||||
Filter = "PNG|*.png"
|
||||
};
|
||||
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
renderer3D1.GetThumbnail().Save(saveFileDialog.FileName, ImageFormat.Png);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
</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>
|
||||
<value>629, 404</value>
|
||||
</data>
|
||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>44, 13</value>
|
||||
@@ -154,7 +154,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label5.ZOrder" xml:space="preserve">
|
||||
<value>25</value>
|
||||
<value>26</value>
|
||||
</data>
|
||||
<metadata name="label3.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
@@ -169,7 +169,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>691, 259</value>
|
||||
<value>632, 374</value>
|
||||
</data>
|
||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>27, 13</value>
|
||||
@@ -190,11 +190,14 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
||||
<value>24</value>
|
||||
<value>25</value>
|
||||
</data>
|
||||
<metadata name="label7.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<data name="label7.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="label7.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
@@ -202,7 +205,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label7.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>654, 236</value>
|
||||
<value>684, 345</value>
|
||||
</data>
|
||||
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>22, 13</value>
|
||||
@@ -223,7 +226,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label7.ZOrder" xml:space="preserve">
|
||||
<value>22</value>
|
||||
<value>23</value>
|
||||
</data>
|
||||
<metadata name="labelTextureMappingPreview.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
@@ -238,7 +241,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="labelTextureMappingPreview.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>655, 56</value>
|
||||
<value>695, 41</value>
|
||||
</data>
|
||||
<data name="labelTextureMappingPreview.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>128, 13</value>
|
||||
@@ -259,7 +262,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>labelTextureMappingPreview.ZOrder" xml:space="preserve">
|
||||
<value>18</value>
|
||||
<value>21</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>
|
||||
@@ -349,10 +352,10 @@
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="buttonDone.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>653, 663</value>
|
||||
<value>632, 547</value>
|
||||
</data>
|
||||
<data name="buttonDone.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>130, 22</value>
|
||||
<value>250, 22</value>
|
||||
</data>
|
||||
<data name="buttonDone.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>111</value>
|
||||
@@ -370,391 +373,13 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>buttonDone.ZOrder" xml:space="preserve">
|
||||
<value>23</value>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<data name="tabArmor.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>3, 3, 3, 3</value>
|
||||
</data>
|
||||
<data name="tabArmor.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>116, 132</value>
|
||||
</data>
|
||||
<data name="tabArmor.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="tabArmor.Text" xml:space="preserve">
|
||||
<value>Armor</value>
|
||||
</data>
|
||||
<data name=">>tabArmor.Name" xml:space="preserve">
|
||||
<value>tabArmor</value>
|
||||
</data>
|
||||
<data name=">>tabArmor.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>tabArmor.Parent" xml:space="preserve">
|
||||
<value>tabBody</value>
|
||||
</data>
|
||||
<data name=">>tabArmor.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="myTablePanel2.ColumnCount" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="offsetArms.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Left</value>
|
||||
</data>
|
||||
<data name="offsetArms.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>58, 99</value>
|
||||
</data>
|
||||
<data name="offsetArms.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>43, 20</value>
|
||||
</data>
|
||||
<data name="offsetArms.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>85</value>
|
||||
</data>
|
||||
<data name="offsetArms.Text" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>offsetArms.Name" xml:space="preserve">
|
||||
<value>offsetArms</value>
|
||||
</data>
|
||||
<data name=">>offsetArms.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>offsetArms.Parent" xml:space="preserve">
|
||||
<value>myTablePanel2</value>
|
||||
</data>
|
||||
<data name=">>offsetArms.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="label14.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Left</value>
|
||||
</data>
|
||||
<data name="label14.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label14.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label14.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 103</value>
|
||||
</data>
|
||||
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>38, 13</value>
|
||||
</data>
|
||||
<data name="label14.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>90</value>
|
||||
</data>
|
||||
<data name="label14.Text" xml:space="preserve">
|
||||
<value>ARMS</value>
|
||||
</data>
|
||||
<data name=">>label14.Name" xml:space="preserve">
|
||||
<value>label14</value>
|
||||
</data>
|
||||
<data name=">>label14.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=">>label14.Parent" xml:space="preserve">
|
||||
<value>myTablePanel2</value>
|
||||
</data>
|
||||
<data name=">>label14.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="offsetBody.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Left</value>
|
||||
</data>
|
||||
<data name="offsetBody.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>58, 36</value>
|
||||
</data>
|
||||
<data name="offsetBody.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>43, 20</value>
|
||||
</data>
|
||||
<data name="offsetBody.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>83</value>
|
||||
</data>
|
||||
<data name="offsetBody.Text" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>offsetBody.Name" xml:space="preserve">
|
||||
<value>offsetBody</value>
|
||||
</data>
|
||||
<data name=">>offsetBody.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>offsetBody.Parent" xml:space="preserve">
|
||||
<value>myTablePanel2</value>
|
||||
</data>
|
||||
<data name=">>offsetBody.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="offsetLegs.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Left</value>
|
||||
</data>
|
||||
<data name="offsetLegs.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>58, 67</value>
|
||||
</data>
|
||||
<data name="offsetLegs.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>43, 20</value>
|
||||
</data>
|
||||
<data name="offsetLegs.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>84</value>
|
||||
</data>
|
||||
<data name="offsetLegs.Text" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>offsetLegs.Name" xml:space="preserve">
|
||||
<value>offsetLegs</value>
|
||||
</data>
|
||||
<data name=">>offsetLegs.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>offsetLegs.Parent" xml:space="preserve">
|
||||
<value>myTablePanel2</value>
|
||||
</data>
|
||||
<data name=">>offsetLegs.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="label10.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Left</value>
|
||||
</data>
|
||||
<data name="label10.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label10.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label10.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 9</value>
|
||||
</data>
|
||||
<data name="label10.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>37, 13</value>
|
||||
</data>
|
||||
<data name="label10.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>87</value>
|
||||
</data>
|
||||
<data name="label10.Text" xml:space="preserve">
|
||||
<value>HEAD</value>
|
||||
</data>
|
||||
<data name=">>label10.Name" xml:space="preserve">
|
||||
<value>label10</value>
|
||||
</data>
|
||||
<data name=">>label10.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=">>label10.Parent" xml:space="preserve">
|
||||
<value>myTablePanel2</value>
|
||||
</data>
|
||||
<data name=">>label10.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="label13.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Left</value>
|
||||
</data>
|
||||
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label13.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 71</value>
|
||||
</data>
|
||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>35, 13</value>
|
||||
</data>
|
||||
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>89</value>
|
||||
</data>
|
||||
<data name="label13.Text" xml:space="preserve">
|
||||
<value>LEGS</value>
|
||||
</data>
|
||||
<data name=">>label13.Name" xml:space="preserve">
|
||||
<value>label13</value>
|
||||
</data>
|
||||
<data name=">>label13.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=">>label13.Parent" xml:space="preserve">
|
||||
<value>myTablePanel2</value>
|
||||
</data>
|
||||
<data name=">>label13.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="offsetHead.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Left</value>
|
||||
</data>
|
||||
<data name="offsetHead.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>58, 5</value>
|
||||
</data>
|
||||
<data name="offsetHead.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>43, 20</value>
|
||||
</data>
|
||||
<data name="offsetHead.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>86</value>
|
||||
</data>
|
||||
<data name="offsetHead.Text" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>offsetHead.Name" xml:space="preserve">
|
||||
<value>offsetHead</value>
|
||||
</data>
|
||||
<data name=">>offsetHead.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>offsetHead.Parent" xml:space="preserve">
|
||||
<value>myTablePanel2</value>
|
||||
</data>
|
||||
<data name=">>offsetHead.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="label12.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Left</value>
|
||||
</data>
|
||||
<data name="label12.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label12.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label12.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 40</value>
|
||||
</data>
|
||||
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>37, 13</value>
|
||||
</data>
|
||||
<data name="label12.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>88</value>
|
||||
</data>
|
||||
<data name="label12.Text" xml:space="preserve">
|
||||
<value>BODY</value>
|
||||
</data>
|
||||
<data name=">>label12.Name" xml:space="preserve">
|
||||
<value>label12</value>
|
||||
</data>
|
||||
<data name=">>label12.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=">>label12.Parent" xml:space="preserve">
|
||||
<value>myTablePanel2</value>
|
||||
</data>
|
||||
<data name=">>label12.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="myTablePanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="myTablePanel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 3</value>
|
||||
</data>
|
||||
<data name="myTablePanel2.RowCount" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="myTablePanel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>110, 126</value>
|
||||
</data>
|
||||
<data name="myTablePanel2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>146</value>
|
||||
</data>
|
||||
<data name=">>myTablePanel2.Name" xml:space="preserve">
|
||||
<value>myTablePanel2</value>
|
||||
</data>
|
||||
<data name=">>myTablePanel2.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>myTablePanel2.Parent" xml:space="preserve">
|
||||
<value>tabPage1</value>
|
||||
</data>
|
||||
<data name=">>myTablePanel2.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="myTablePanel2.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
|
||||
<value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="offsetArms" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label14" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="offsetBody" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="offsetLegs" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label10" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label13" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="offsetHead" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label12" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,Percent,50" /><Rows Styles="Percent,25,Percent,25,Percent,25,Percent,25" /></TableLayoutSettings></value>
|
||||
</data>
|
||||
<data name="tabPage1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>4, 22</value>
|
||||
</data>
|
||||
<data name="tabPage1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>3, 3, 3, 3</value>
|
||||
</data>
|
||||
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>116, 132</value>
|
||||
</data>
|
||||
<data name="tabPage1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tabPage1.Text" xml:space="preserve">
|
||||
<value>Body</value>
|
||||
</data>
|
||||
<data name=">>tabPage1.Name" xml:space="preserve">
|
||||
<value>tabPage1</value>
|
||||
</data>
|
||||
<data name=">>tabPage1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>tabPage1.Parent" xml:space="preserve">
|
||||
<value>tabBody</value>
|
||||
</data>
|
||||
<data name=">>tabPage1.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="tabBody.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="tabBody.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 16</value>
|
||||
</data>
|
||||
<data name="tabBody.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>124, 158</value>
|
||||
</data>
|
||||
<data name="tabBody.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>144</value>
|
||||
</data>
|
||||
<data name=">>tabBody.Name" xml:space="preserve">
|
||||
<value>tabBody</value>
|
||||
</data>
|
||||
<data name=">>tabBody.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>tabBody.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>tabBody.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>654, 459</value>
|
||||
</data>
|
||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>130, 177</value>
|
||||
</data>
|
||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>139</value>
|
||||
</data>
|
||||
<data name="groupBox1.Text" xml:space="preserve">
|
||||
<value>OFFSETS</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
||||
<value>21</value>
|
||||
<value>24</value>
|
||||
</data>
|
||||
<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>
|
||||
<value>752, 315</value>
|
||||
</data>
|
||||
<data name="buttonEXPORT.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>61, 21</value>
|
||||
@@ -775,13 +400,13 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>buttonEXPORT.ZOrder" xml:space="preserve">
|
||||
<value>17</value>
|
||||
<value>20</value>
|
||||
</data>
|
||||
<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>
|
||||
<value>685, 315</value>
|
||||
</data>
|
||||
<data name="buttonIMPORT.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>61, 21</value>
|
||||
@@ -802,7 +427,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>buttonIMPORT.ZOrder" xml:space="preserve">
|
||||
<value>20</value>
|
||||
<value>22</value>
|
||||
</data>
|
||||
<data name="buttonImportModel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
@@ -811,7 +436,7 @@
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="buttonImportModel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>306, 663</value>
|
||||
<value>306, 547</value>
|
||||
</data>
|
||||
<data name="buttonImportModel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>106, 21</value>
|
||||
@@ -832,7 +457,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>buttonImportModel.ZOrder" xml:space="preserve">
|
||||
<value>16</value>
|
||||
<value>19</value>
|
||||
</data>
|
||||
<data name="buttonExportModel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
@@ -841,7 +466,7 @@
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="buttonExportModel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>418, 663</value>
|
||||
<value>418, 548</value>
|
||||
</data>
|
||||
<data name="buttonExportModel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>89, 21</value>
|
||||
@@ -862,7 +487,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>buttonExportModel.ZOrder" xml:space="preserve">
|
||||
<value>15</value>
|
||||
<value>18</value>
|
||||
</data>
|
||||
<data name="OpenJSONButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
@@ -871,7 +496,7 @@
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="OpenJSONButton.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>194, 663</value>
|
||||
<value>194, 547</value>
|
||||
</data>
|
||||
<data name="OpenJSONButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>106, 21</value>
|
||||
@@ -892,13 +517,16 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>OpenJSONButton.ZOrder" xml:space="preserve">
|
||||
<value>14</value>
|
||||
<value>17</value>
|
||||
</data>
|
||||
<data name="generateTextureCheckBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</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, 547</value>
|
||||
<value>632, 440</value>
|
||||
</data>
|
||||
<data name="generateTextureCheckBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>140, 15</value>
|
||||
@@ -919,13 +547,16 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>generateTextureCheckBox.ZOrder" xml:space="preserve">
|
||||
<value>13</value>
|
||||
<value>16</value>
|
||||
</data>
|
||||
<data name="checkGuide.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</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, 568</value>
|
||||
<value>632, 461</value>
|
||||
</data>
|
||||
<data name="checkGuide.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>84, 15</value>
|
||||
@@ -946,13 +577,16 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>checkGuide.ZOrder" xml:space="preserve">
|
||||
<value>12</value>
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name="checkBoxArmor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</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, 589</value>
|
||||
<value>632, 503</value>
|
||||
</data>
|
||||
<data name="checkBoxArmor.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>129, 15</value>
|
||||
@@ -973,16 +607,16 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>checkBoxArmor.ZOrder" xml:space="preserve">
|
||||
<value>11</value>
|
||||
<value>14</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>
|
||||
<value>685, 372</value>
|
||||
</data>
|
||||
<data name="SizeXUpDown.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>119, 20</value>
|
||||
<value>53, 20</value>
|
||||
</data>
|
||||
<data name="SizeXUpDown.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>150</value>
|
||||
@@ -1000,16 +634,16 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>SizeXUpDown.ZOrder" xml:space="preserve">
|
||||
<value>10</value>
|
||||
<value>13</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>
|
||||
<value>744, 372</value>
|
||||
</data>
|
||||
<data name="SizeYUpDown.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>119, 20</value>
|
||||
<value>53, 20</value>
|
||||
</data>
|
||||
<data name="SizeYUpDown.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>151</value>
|
||||
@@ -1027,16 +661,16 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>SizeYUpDown.ZOrder" xml:space="preserve">
|
||||
<value>9</value>
|
||||
<value>12</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>
|
||||
<value>803, 372</value>
|
||||
</data>
|
||||
<data name="SizeZUpDown.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>119, 20</value>
|
||||
<value>58, 20</value>
|
||||
</data>
|
||||
<data name="SizeZUpDown.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>152</value>
|
||||
@@ -1054,13 +688,13 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>SizeZUpDown.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
<value>11</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>
|
||||
<value>712, 342</value>
|
||||
</data>
|
||||
<data name="TextureXUpDown.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>43, 20</value>
|
||||
@@ -1078,13 +712,13 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>TextureXUpDown.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
<value>10</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>
|
||||
<value>761, 342</value>
|
||||
</data>
|
||||
<data name="TextureYUpDown.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>43, 20</value>
|
||||
@@ -1102,16 +736,16 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>TextureYUpDown.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
<value>9</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>
|
||||
<value>803, 404</value>
|
||||
</data>
|
||||
<data name="PosZUpDown.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>120, 20</value>
|
||||
<value>58, 20</value>
|
||||
</data>
|
||||
<data name="PosZUpDown.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>160</value>
|
||||
@@ -1129,16 +763,16 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>PosZUpDown.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
<value>6</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>
|
||||
<value>744, 404</value>
|
||||
</data>
|
||||
<data name="PosYUpDown.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>119, 20</value>
|
||||
<value>53, 20</value>
|
||||
</data>
|
||||
<data name="PosYUpDown.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>159</value>
|
||||
@@ -1156,16 +790,16 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>PosYUpDown.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
<value>7</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>
|
||||
<value>685, 404</value>
|
||||
</data>
|
||||
<data name="PosXUpDown.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>119, 20</value>
|
||||
<value>53, 20</value>
|
||||
</data>
|
||||
<data name="PosXUpDown.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>158</value>
|
||||
@@ -1183,23 +817,124 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>PosXUpDown.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="modelPartListBox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>23, 59</value>
|
||||
</data>
|
||||
<data name="modelPartListBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>165, 481</value>
|
||||
</data>
|
||||
<data name="modelPartListBox.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>161</value>
|
||||
</data>
|
||||
<data name=">>modelPartListBox.Name" xml:space="preserve">
|
||||
<value>modelPartListBox</value>
|
||||
</data>
|
||||
<data name=">>modelPartListBox.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=">>modelPartListBox.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>modelPartListBox.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="clampToViewCheckbox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="clampToViewCheckbox.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="clampToViewCheckbox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>632, 482</value>
|
||||
</data>
|
||||
<data name="clampToViewCheckbox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>137, 15</value>
|
||||
</data>
|
||||
<data name="clampToViewCheckbox.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>162</value>
|
||||
</data>
|
||||
<data name="clampToViewCheckbox.Text" xml:space="preserve">
|
||||
<value>Clamp Model to View</value>
|
||||
</data>
|
||||
<data name=">>clampToViewCheckbox.Name" xml:space="preserve">
|
||||
<value>clampToViewCheckbox</value>
|
||||
</data>
|
||||
<data name=">>clampToViewCheckbox.Type" xml:space="preserve">
|
||||
<value>MetroFramework.Controls.MetroCheckBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
|
||||
</data>
|
||||
<data name=">>clampToViewCheckbox.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>clampToViewCheckbox.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="captureScreenshotButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="captureScreenshotButton.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>513, 548</value>
|
||||
</data>
|
||||
<data name="captureScreenshotButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>113, 21</value>
|
||||
</data>
|
||||
<data name="captureScreenshotButton.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>163</value>
|
||||
</data>
|
||||
<data name="captureScreenshotButton.Text" xml:space="preserve">
|
||||
<value>Capture Screenshot</value>
|
||||
</data>
|
||||
<data name=">>captureScreenshotButton.Name" xml:space="preserve">
|
||||
<value>captureScreenshotButton</value>
|
||||
</data>
|
||||
<data name=">>captureScreenshotButton.Type" xml:space="preserve">
|
||||
<value>MetroFramework.Controls.MetroButton, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
|
||||
</data>
|
||||
<data name=">>captureScreenshotButton.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>captureScreenshotButton.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="showToolsCheckBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="showToolsCheckBox.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="showToolsCheckBox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>632, 524</value>
|
||||
</data>
|
||||
<data name="showToolsCheckBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>82, 15</value>
|
||||
</data>
|
||||
<data name="showToolsCheckBox.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>164</value>
|
||||
</data>
|
||||
<data name="showToolsCheckBox.Text" xml:space="preserve">
|
||||
<value>Show Tools</value>
|
||||
</data>
|
||||
<data name=">>showToolsCheckBox.Name" xml:space="preserve">
|
||||
<value>showToolsCheckBox</value>
|
||||
</data>
|
||||
<data name=">>showToolsCheckBox.Type" xml:space="preserve">
|
||||
<value>MetroFramework.Controls.MetroCheckBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
|
||||
</data>
|
||||
<data name=">>showToolsCheckBox.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>showToolsCheckBox.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="renderer3D1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="renderer3D1.CameraTarget" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAElPcGVuVEssIFZlcnNpb249My4zLjMuMCwgQ3VsdHVyZT1uZXV0
|
||||
cmFsLCBQdWJsaWNLZXlUb2tlbj1iYWQxOTlmZTg0ZWIzZGY0BQEAAAAOT3BlblRLLlZlY3RvcjICAAAA
|
||||
AVgBWQAACwsCAAAAAAAAAAAAoEAL
|
||||
</value>
|
||||
</data>
|
||||
<data name="renderer3D1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>194, 59</value>
|
||||
</data>
|
||||
<data name="renderer3D1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>449, 577</value>
|
||||
<value>432, 482</value>
|
||||
</data>
|
||||
<data name="renderer3D1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -1214,19 +949,22 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>renderer3D1.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="uvPictureBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="uvPictureBox.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
|
||||
<value>Zoom</value>
|
||||
</data>
|
||||
<data name="uvPictureBox.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="uvPictureBox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>655, 72</value>
|
||||
<value>632, 59</value>
|
||||
</data>
|
||||
<data name="uvPictureBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>128, 128</value>
|
||||
<value>250, 250</value>
|
||||
</data>
|
||||
<data name="uvPictureBox.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
||||
<value>Zoom</value>
|
||||
@@ -1244,28 +982,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>uvPictureBox.ZOrder" xml:space="preserve">
|
||||
<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>
|
||||
<value>27</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
@@ -1277,7 +994,7 @@
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>806, 707</value>
|
||||
<value>905, 590</value>
|
||||
</data>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
@@ -3785,11 +3502,8 @@
|
||||
AP//AAA=
|
||||
</value>
|
||||
</data>
|
||||
<data name="$this.MaximumSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>1114, 1000</value>
|
||||
</data>
|
||||
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>753, 707</value>
|
||||
<value>905, 590</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterParent</value>
|
||||
|
||||
81
PCK-Studio/Internal/ModelOffset.cs
Normal file
81
PCK-Studio/Internal/ModelOffset.cs
Normal file
@@ -0,0 +1,81 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.IO;
|
||||
using PckStudio.Extensions;
|
||||
using System.Diagnostics;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace PckStudio.Internal
|
||||
{
|
||||
internal readonly struct ModelOffset
|
||||
{
|
||||
private static readonly Regex sWhitespace = new Regex(@"\s+");
|
||||
internal static string ReplaceWhitespace(string input, string replacement)
|
||||
{
|
||||
return sWhitespace.Replace(input, replacement);
|
||||
}
|
||||
|
||||
private static readonly string[] ValidModelOffsetTypes = new string[]
|
||||
{
|
||||
// Body Offsets
|
||||
"HEAD",
|
||||
"BODY",
|
||||
"ARM0",
|
||||
"ARM1",
|
||||
"LEG0",
|
||||
"LEG1",
|
||||
|
||||
// Armor Offsets
|
||||
"HELMET",
|
||||
"CHEST", "BODYARMOR",
|
||||
"SHOULDER0", "ARMARMOR0",
|
||||
"SHOULDER1", "ARMARMOR1",
|
||||
"BELT",
|
||||
"LEGGING0",
|
||||
"LEGGING1",
|
||||
"SOCK0", "BOOT0",
|
||||
"SOCK1", "BOOT1",
|
||||
|
||||
"TOOL0",
|
||||
"TOOL1",
|
||||
};
|
||||
|
||||
public readonly string Name;
|
||||
public readonly float Value;
|
||||
|
||||
public ModelOffset(string name, float value)
|
||||
{
|
||||
Name = name;
|
||||
Value = value;
|
||||
}
|
||||
|
||||
public static ModelOffset FromString(string offsetFormatString)
|
||||
{
|
||||
string[] offset = ReplaceWhitespace(offsetFormatString.TrimEnd('\n', '\r', ' '), ",").Split(',');
|
||||
if (offset.Length < 3)
|
||||
throw new InvalidDataException("Format string does not contain enough data.");
|
||||
|
||||
string name = offset[0];
|
||||
|
||||
if (!ValidModelOffsetTypes.Contains(name))
|
||||
{
|
||||
Debug.WriteLine($"'{name}' is an invalid offset type.");
|
||||
}
|
||||
|
||||
// Ignore => Y assumed
|
||||
//if (offset[1] != "Y")
|
||||
|
||||
if (!float.TryParse(offset[2], out float value))
|
||||
{
|
||||
Debug.WriteLine($"Failed to parse y offset for: '{name}'");
|
||||
}
|
||||
return new ModelOffset(name, value);
|
||||
}
|
||||
|
||||
public (string, string) ToProperty()
|
||||
{
|
||||
string value = $"{Name} Y {Value}";
|
||||
return ("OFFSET", value.Replace(',', '.'));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -137,8 +137,10 @@
|
||||
<Compile Include="Classes\Utils\Ray.cs" />
|
||||
<Compile Include="Extensions\CursorExtensions.cs" />
|
||||
<Compile Include="Extensions\PckFileDataExtensions.cs" />
|
||||
<Compile Include="Extensions\SkinBOXExtensions.cs" />
|
||||
<Compile Include="Extensions\System.Numerics.cs" />
|
||||
<Compile Include="Extensions\TreeNodeExtensions.cs" />
|
||||
<Compile Include="Internal\ModelOffset.cs" />
|
||||
<Compile Include="Helper\AnimationHelper.cs" />
|
||||
<Compile Include="Internal\AnimationCategory.cs" />
|
||||
<Compile Include="Internal\SkinAnimFlag.cs" />
|
||||
|
||||
@@ -31,14 +31,22 @@ namespace PckStudio.Rendering
|
||||
{
|
||||
private List<CubeData> cubes;
|
||||
|
||||
internal float Scale { get; set; } = 1f;
|
||||
|
||||
internal CubeRenderGroup(string name) : base(name, PrimitiveType.Quads)
|
||||
{
|
||||
cubes = new List<CubeData>(5);
|
||||
}
|
||||
|
||||
internal CubeRenderGroup(string name, float scale)
|
||||
: this(name)
|
||||
{
|
||||
Scale = scale;
|
||||
}
|
||||
|
||||
internal void AddSkinBox(SkinBOX skinBox)
|
||||
{
|
||||
AddCube(skinBox.Pos.ToOpenTKVector(), skinBox.Size.ToOpenTKVector(), skinBox.UV.ToOpenTKVector(), skinBox.Scale + 1f, skinBox.Mirror, skinBox.Type == "HEAD");
|
||||
AddCube(skinBox.Pos.ToOpenTKVector(), skinBox.Size.ToOpenTKVector(), skinBox.UV.ToOpenTKVector(), skinBox.Scale + Scale, skinBox.Mirror, skinBox.Type == "HEAD");
|
||||
}
|
||||
|
||||
internal void Clear()
|
||||
|
||||
3
PCK-Studio/Rendering/SkinRenderer.Designer.cs
generated
3
PCK-Studio/Rendering/SkinRenderer.Designer.cs
generated
@@ -45,11 +45,12 @@ namespace PckStudio.Rendering
|
||||
// moveTimer
|
||||
//
|
||||
this.moveTimer.Enabled = true;
|
||||
this.moveTimer.Interval = 10;
|
||||
this.moveTimer.Interval = 1;
|
||||
this.moveTimer.Tick += new System.EventHandler(this.moveTimer_Tick);
|
||||
//
|
||||
// animationTimer
|
||||
//
|
||||
this.animationTimer.Enabled = true;
|
||||
this.animationTimer.Interval = 50;
|
||||
this.animationTimer.Tick += new System.EventHandler(this.animationTimer_Tick);
|
||||
//
|
||||
|
||||
@@ -67,10 +67,6 @@ namespace PckStudio.Rendering
|
||||
remove => Events.RemoveHandler(nameof(TextureChanging), value);
|
||||
}
|
||||
|
||||
|
||||
[Description("Anim flags for special effects applied to the skin")]
|
||||
[Category("Appearance")]
|
||||
[Browsable(true)]
|
||||
public SkinANIM ANIM
|
||||
{
|
||||
get => _anim;
|
||||
@@ -81,13 +77,9 @@ namespace PckStudio.Rendering
|
||||
}
|
||||
}
|
||||
|
||||
[Description("Additional model data")]
|
||||
[Category("Appearance")]
|
||||
public ObservableCollection<SkinBOX> ModelData { get; }
|
||||
|
||||
[Description("The offset from the origin point")]
|
||||
[Category("Appearance")]
|
||||
public Vector2 CameraTarget
|
||||
private Vector2 CameraTarget
|
||||
{
|
||||
get => camera.Position;
|
||||
set
|
||||
@@ -153,30 +145,32 @@ namespace PckStudio.Rendering
|
||||
private Image _texture;
|
||||
|
||||
private Dictionary<string, CubeRenderGroup> additionalModelRenderGroups;
|
||||
|
||||
private Dictionary<string, float> partOffset;
|
||||
private CubeRenderGroup head;
|
||||
private CubeRenderGroup headOverlay;
|
||||
private CubeRenderGroup body;
|
||||
private CubeRenderGroup bodyOverlay;
|
||||
private CubeRenderGroup rightArm;
|
||||
private CubeRenderGroup rightArmOverlay;
|
||||
private CubeRenderGroup leftArm;
|
||||
private CubeRenderGroup leftArmOverlay;
|
||||
private CubeRenderGroup rightLeg;
|
||||
private CubeRenderGroup rightLegOverlay;
|
||||
private CubeRenderGroup leftLeg;
|
||||
|
||||
private CubeRenderGroup headOverlay;
|
||||
private CubeRenderGroup bodyOverlay;
|
||||
private CubeRenderGroup rightArmOverlay;
|
||||
private CubeRenderGroup leftArmOverlay;
|
||||
private CubeRenderGroup rightLegOverlay;
|
||||
private CubeRenderGroup leftLegOverlay;
|
||||
|
||||
private float animationRot;
|
||||
private float animationRotStep = 0.05f;
|
||||
private float animationCurrentRotationAngle;
|
||||
private float animationRotationStep = 0.5f;
|
||||
private float animationMaxAngleInDegrees = 5f;
|
||||
|
||||
#if DEBUG
|
||||
private bool showWireFrame = false;
|
||||
|
||||
internal Matrix4 HeadMatrix { get; set; } = Matrix4.Identity;
|
||||
internal Matrix4 BodyMatrix { get; set; } = Matrix4.Identity;
|
||||
internal Matrix4 RightArmMatrix { get; set; } = Matrix4.Identity;
|
||||
internal Matrix4 LeftArmMatrix { get; set; } = Matrix4.Identity;
|
||||
internal Matrix4 RightArmMatrix { get; set; } = Matrix4.CreateFromAxisAngle(Vector3.UnitZ, 25f);
|
||||
internal Matrix4 LeftArmMatrix { get; set; } = Matrix4.CreateFromAxisAngle(Vector3.UnitZ, -25f);
|
||||
internal Matrix4 RightLegMatrix { get; set; } = Matrix4.Identity;
|
||||
internal Matrix4 LeftLegMatrix { get; set; } = Matrix4.Identity;
|
||||
#endif
|
||||
@@ -190,14 +184,12 @@ namespace PckStudio.Rendering
|
||||
ModelData.CollectionChanged += ModelData_CollectionChanged;
|
||||
additionalModelRenderGroups = new Dictionary<string, CubeRenderGroup>(6)
|
||||
{
|
||||
{ "HEAD", head },
|
||||
{ "BODY", body },
|
||||
{ "BODYARMOR",new CubeRenderGroup("BODYARMOR") },
|
||||
{ "ARM0", rightArm },
|
||||
{ "ARM1", leftArm },
|
||||
{ "BELT", new CubeRenderGroup("BELT") },
|
||||
{ "LEG0", rightLeg },
|
||||
{ "LEG1", leftLeg },
|
||||
{ "HEAD", head },
|
||||
{ "BODY", body },
|
||||
{ "ARM0", rightArm },
|
||||
{ "ARM1", leftArm },
|
||||
{ "LEG0", rightLeg },
|
||||
{ "LEG1", leftLeg },
|
||||
|
||||
{ "HEADWEAR", headOverlay },
|
||||
{ "JACKET" , bodyOverlay },
|
||||
@@ -205,7 +197,50 @@ namespace PckStudio.Rendering
|
||||
{ "SLEEVE1" , leftArmOverlay },
|
||||
{ "PANTS0" , rightLegOverlay },
|
||||
{ "PANTS1" , leftLegOverlay },
|
||||
|
||||
{ "BODYARMOR", new CubeRenderGroup("BODYARMOR") },
|
||||
{ "BELT", new CubeRenderGroup("BELT") },
|
||||
};
|
||||
|
||||
partOffset = new Dictionary<string, float>()
|
||||
{
|
||||
{ "HEAD", 0f },
|
||||
{ "BODY", 0f },
|
||||
{ "ARM0", 0f },
|
||||
{ "ARM1", 0f },
|
||||
{ "LEG0", 0f },
|
||||
{ "LEG1", 0f },
|
||||
|
||||
{ "HEADWEAR" , 0f },
|
||||
{ "JACKET" , 0f },
|
||||
{ "SLEEVE0" , 0f },
|
||||
{ "SLEEVE1" , 0f },
|
||||
{ "PANTS0" , 0f },
|
||||
{ "PANTS1" , 0f },
|
||||
|
||||
{ "BODYARMOR", 0f },
|
||||
{ "BELT" , 0f },
|
||||
};
|
||||
}
|
||||
|
||||
public void SetPartOffset(ModelOffset offset)
|
||||
{
|
||||
SetPartOffset(offset.Name, offset.Value);
|
||||
}
|
||||
|
||||
public void SetPartOffset(string name, float value)
|
||||
{
|
||||
if (!partOffset.ContainsKey(name))
|
||||
{
|
||||
Debug.WriteLine($"'{name}' is not inside {nameof(partOffset)}");
|
||||
return;
|
||||
}
|
||||
partOffset[name] = value;
|
||||
}
|
||||
|
||||
private float GetOffset(string name)
|
||||
{
|
||||
return partOffset.ContainsKey(name) ? partOffset[name] : 0f;
|
||||
}
|
||||
|
||||
private void ModelData_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
|
||||
@@ -234,7 +269,7 @@ namespace PckStudio.Rendering
|
||||
head.AddCube(new(-4, -8, -4), new(8, 8, 8), new(0, 0), flipZMapping: true);
|
||||
head.Submit();
|
||||
|
||||
headOverlay ??= new CubeRenderGroup("Head Overlay");
|
||||
headOverlay ??= new CubeRenderGroup("Head Overlay", OverlayScale);
|
||||
headOverlay.AddCube(new(-4, -8, -4), new(8, 8, 8), new(32, 0), flipZMapping: true, scale: OverlayScale);
|
||||
headOverlay.Submit();
|
||||
|
||||
@@ -242,7 +277,7 @@ namespace PckStudio.Rendering
|
||||
body.AddCube(new(-4, 0, -2), new(8, 12, 4), new(16, 16));
|
||||
body.Submit();
|
||||
|
||||
bodyOverlay ??= new CubeRenderGroup("Body Overlay");
|
||||
bodyOverlay ??= new CubeRenderGroup("Body Overlay", OverlayScale);
|
||||
bodyOverlay.AddCube(new(-4, 0, -2), new(8, 12, 4), new(16, 32), scale: OverlayScale);
|
||||
bodyOverlay.Submit();
|
||||
|
||||
@@ -250,7 +285,7 @@ namespace PckStudio.Rendering
|
||||
rightArm.AddCube(new(-3, -2, -2), new(4, 12, 4), new(40, 16));
|
||||
rightArm.Submit();
|
||||
|
||||
rightArmOverlay ??= new CubeRenderGroup("Right Arm Overlay");
|
||||
rightArmOverlay ??= new CubeRenderGroup("Right Arm Overlay", OverlayScale);
|
||||
rightArmOverlay.AddCube(new(-3, -2, -2), new(4, 12, 4), new(40, 32), scale: OverlayScale);
|
||||
rightArmOverlay.Submit();
|
||||
|
||||
@@ -258,7 +293,7 @@ namespace PckStudio.Rendering
|
||||
leftArm.AddCube(new(-1, -2, -2), new(4, 12, 4), new(32, 48));
|
||||
leftArm.Submit();
|
||||
|
||||
leftArmOverlay ??= new CubeRenderGroup("Left Arm Overlay");
|
||||
leftArmOverlay ??= new CubeRenderGroup("Left Arm Overlay", OverlayScale);
|
||||
leftArmOverlay.AddCube(new(-1, -2, -2), new(4, 12, 4), new(48, 48), scale: OverlayScale);
|
||||
leftArmOverlay.Submit();
|
||||
|
||||
@@ -266,7 +301,7 @@ namespace PckStudio.Rendering
|
||||
rightLeg.AddCube(new(-2, 0, -2), new(4, 12, 4), new(0, 16));
|
||||
rightLeg.Submit();
|
||||
|
||||
rightLegOverlay ??= new CubeRenderGroup("Right Leg Overlay");
|
||||
rightLegOverlay ??= new CubeRenderGroup("Right Leg Overlay", OverlayScale);
|
||||
rightLegOverlay.AddCube(new(-2, 0, -2), new(4, 12, 4), new(0, 32), scale: OverlayScale);
|
||||
rightLegOverlay.Submit();
|
||||
|
||||
@@ -274,7 +309,7 @@ namespace PckStudio.Rendering
|
||||
leftLeg.AddCube(new(-2, 0, -2), new(4, 12, 4), new(16, 48));
|
||||
leftLeg.Submit();
|
||||
|
||||
leftLegOverlay ??= new CubeRenderGroup("Left Leg Overlay");
|
||||
leftLegOverlay ??= new CubeRenderGroup("Left Leg Overlay", OverlayScale);
|
||||
leftLegOverlay.AddCube(new(-2, 0, -2), new(4, 12, 4), new(0, 48), scale: OverlayScale);
|
||||
leftLegOverlay.Submit();
|
||||
}
|
||||
@@ -435,7 +470,7 @@ namespace PckStudio.Rendering
|
||||
|
||||
MakeCurrent();
|
||||
|
||||
camera.Update(Size.Width / (float)Size.Height);
|
||||
camera.Update(ClientSize.Width / (float)ClientSize.Height);
|
||||
|
||||
var viewProjection = camera.GetViewProjection();
|
||||
_skinShader.SetUniformMat4("u_ViewProjection", ref viewProjection);
|
||||
@@ -444,12 +479,13 @@ namespace PckStudio.Rendering
|
||||
GL.Viewport(Size);
|
||||
|
||||
GL.ClearColor(BackColor);
|
||||
GL.Clear(ClearBufferMask.ColorBufferBit);
|
||||
GL.Clear(ClearBufferMask.DepthBufferBit);
|
||||
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
|
||||
|
||||
GL.Enable(EnableCap.Texture2D); // Enable textures
|
||||
|
||||
GL.Enable(EnableCap.DepthTest); // Enable correct Z Drawings
|
||||
GL.DepthFunc(DepthFunction.Lequal); // Enable correct Z Drawings
|
||||
GL.DepthMask(true);
|
||||
|
||||
GL.Enable(EnableCap.Blend);
|
||||
GL.BlendFunc(BlendingFactor.SrcAlpha, BlendingFactor.OneMinusSrcAlpha);
|
||||
@@ -463,44 +499,41 @@ namespace PckStudio.Rendering
|
||||
|
||||
bool slimModel = ANIM.GetFlag(SkinAnimFlag.SLIM_MODEL);
|
||||
|
||||
const float rotationAngle = 2.5f;
|
||||
var extraLegRightRotation = Matrix4.Identity;
|
||||
var extraLegLeftRotation = Matrix4.Identity;
|
||||
var extraArmRightRotation = Matrix4.Identity;
|
||||
var extraArmLeftRotation = Matrix4.Identity;
|
||||
var legRightMatrix = Matrix4.Identity;
|
||||
var legLeftMatrix = Matrix4.Identity;
|
||||
var armRightMatrix = Matrix4.Identity;
|
||||
var armLeftMatrix = Matrix4.Identity;
|
||||
|
||||
if (!ANIM.GetFlag(SkinAnimFlag.STATIC_ARMS))
|
||||
{
|
||||
extraArmRightRotation = Matrix4.CreateFromAxisAngle(Vector3.UnitZ, MathHelper.DegreesToRadians(-rotationAngle)) *
|
||||
Matrix4.CreateFromAxisAngle(Vector3.UnitZ, MathHelper.DegreesToRadians(-animationRot));
|
||||
extraArmLeftRotation = Matrix4.CreateFromAxisAngle(Vector3.UnitZ, MathHelper.DegreesToRadians(rotationAngle)) *
|
||||
Matrix4.CreateFromAxisAngle(Vector3.UnitZ, MathHelper.DegreesToRadians(animationRot));
|
||||
armRightMatrix = Matrix4.CreateFromAxisAngle(Vector3.UnitX, MathHelper.DegreesToRadians(animationCurrentRotationAngle));
|
||||
armLeftMatrix = Matrix4.CreateFromAxisAngle(Vector3.UnitX, MathHelper.DegreesToRadians(-animationCurrentRotationAngle));
|
||||
}
|
||||
|
||||
if (!ANIM.GetFlag(SkinAnimFlag.STATIC_LEGS))
|
||||
{
|
||||
extraLegRightRotation = Matrix4.CreateFromAxisAngle(Vector3.UnitX, MathHelper.DegreesToRadians(-rotationAngle));
|
||||
extraLegLeftRotation = Matrix4.CreateFromAxisAngle(Vector3.UnitX, MathHelper.DegreesToRadians(rotationAngle));
|
||||
legRightMatrix = Matrix4.CreateFromAxisAngle(Vector3.UnitX, MathHelper.DegreesToRadians(-animationCurrentRotationAngle));
|
||||
legLeftMatrix = Matrix4.CreateFromAxisAngle(Vector3.UnitX, MathHelper.DegreesToRadians(animationCurrentRotationAngle));
|
||||
}
|
||||
|
||||
if (ANIM.GetFlag(SkinAnimFlag.ZOMBIE_ARMS))
|
||||
{
|
||||
var rotation = Matrix4.CreateFromAxisAngle(Vector3.UnitX, MathHelper.DegreesToRadians(-90f));
|
||||
extraArmRightRotation *= rotation;
|
||||
extraArmLeftRotation *= rotation;
|
||||
armRightMatrix = rotation;
|
||||
armLeftMatrix = rotation;
|
||||
}
|
||||
|
||||
if (ANIM.GetFlag(SkinAnimFlag.STATUE_OF_LIBERTY))
|
||||
{
|
||||
extraArmRightRotation = Matrix4.CreateFromAxisAngle(Vector3.UnitX, MathHelper.DegreesToRadians(-180f));
|
||||
armRightMatrix = Matrix4.CreateFromAxisAngle(Vector3.UnitX, MathHelper.DegreesToRadians(-180f));
|
||||
}
|
||||
|
||||
RenderBodyPart(new Vector3(0f, 0f, 0f), Vector3.Zero, HeadMatrix, modelMatrix, "HEAD", "HEADWEAR");
|
||||
RenderBodyPart(new Vector3(0f, 0f, 0f), Vector3.Zero, BodyMatrix, modelMatrix, "BODY", "JACKET");
|
||||
RenderBodyPart(new Vector3(0f, 2f, 0f), new Vector3(slimModel ? -4f : -5f, -2f, 0f), RightArmMatrix * extraArmRightRotation, modelMatrix, "ARM0", "SLEEVE0");
|
||||
RenderBodyPart(new Vector3(0f, 2f, 0f), new Vector3( 5f, -2f, 0f), LeftArmMatrix * extraArmLeftRotation, modelMatrix, "ARM1", "SLEEVE1");
|
||||
RenderBodyPart(new Vector3(0f, 12f, 0f), new Vector3(-2f, -12f, 0f), RightLegMatrix * extraLegRightRotation, modelMatrix, "LEG0", "PANTS0");
|
||||
RenderBodyPart(new Vector3(0f, 12f, 0f), new Vector3( 2f, -12f, 0f), LeftLegMatrix * extraLegLeftRotation, modelMatrix, "LEG1", "PANTS1");
|
||||
RenderBodyPart(new Vector3( 4f, 2f, 0f), new Vector3(slimModel ? -4f : -5f, -2f, 0f), RightArmMatrix * armRightMatrix, modelMatrix, "ARM0", "SLEEVE0");
|
||||
RenderBodyPart(new Vector3(-4f, 2f, 0f), new Vector3( 5f, -2f, 0f), LeftArmMatrix * armLeftMatrix , modelMatrix, "ARM1", "SLEEVE1");
|
||||
RenderBodyPart(new Vector3(0f, 12f, 0f), new Vector3(-2f, -12f, 0f), RightLegMatrix * legRightMatrix, modelMatrix, "LEG0", "PANTS0");
|
||||
RenderBodyPart(new Vector3(0f, 12f, 0f), new Vector3( 2f, -12f, 0f), LeftLegMatrix * legLeftMatrix , modelMatrix, "LEG1", "PANTS1");
|
||||
|
||||
SwapBuffers();
|
||||
}
|
||||
@@ -516,6 +549,9 @@ namespace PckStudio.Rendering
|
||||
private void RenderPart(string name, Vector3 pivot, Vector3 translation, Matrix4 rotation, Matrix4 globalMatrix)
|
||||
{
|
||||
CubeRenderGroup renderGroup = additionalModelRenderGroups[name];
|
||||
float yOffset = GetOffset(name);
|
||||
translation.Y -= yOffset;
|
||||
pivot.Y += yOffset;
|
||||
renderGroup.Submit();
|
||||
RenderBuffer buffer = renderGroup.GetRenderBuffer();
|
||||
var model = Matrix4.CreateTranslation(translation);
|
||||
@@ -570,11 +606,9 @@ namespace PckStudio.Rendering
|
||||
if (!Focused)
|
||||
return;
|
||||
|
||||
const float angle = 2f;
|
||||
|
||||
animationRot += animationRotStep;
|
||||
if (animationRot > angle || animationRot < -angle)
|
||||
animationRotStep = -animationRotStep;
|
||||
animationCurrentRotationAngle += animationRotationStep;
|
||||
if (animationCurrentRotationAngle >= animationMaxAngleInDegrees || animationCurrentRotationAngle <= -animationMaxAngleInDegrees)
|
||||
animationRotationStep = -animationRotationStep;
|
||||
Refresh();
|
||||
}
|
||||
|
||||
@@ -632,7 +666,7 @@ namespace PckStudio.Rendering
|
||||
/// <summary>
|
||||
/// Captures the currently displayed frame
|
||||
/// </summary>
|
||||
/// <returns>Thumbnail of the cameras current view space</returns>
|
||||
/// <returns>Image of the cameras current view</returns>
|
||||
public Image GetThumbnail()
|
||||
{
|
||||
Bitmap bmp = new Bitmap(Width, Height);
|
||||
|
||||
@@ -9,6 +9,15 @@ namespace PckStudio.ToolboxItems
|
||||
public class InterpolationPictureBox : PictureBox
|
||||
{
|
||||
public InterpolationMode InterpolationMode { get; set; }
|
||||
|
||||
public InterpolationMode BackgroundInterpolationMode { get; set; }
|
||||
|
||||
protected override void OnPaintBackground(PaintEventArgs paintEventArgs)
|
||||
{
|
||||
paintEventArgs.Graphics.InterpolationMode = BackgroundInterpolationMode;
|
||||
paintEventArgs.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
|
||||
base.OnPaintBackground(paintEventArgs);
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs paintEventArgs)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user