mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-05-27 13:54:44 +00:00
Animation Editor and small adjustments
-Added an Animation Editor for textures in the "textures/blocks" and "textures/items" folders (besides the clock and compass) and an "EDIT TEXTURE ANIMATION" button. -Within the animation editor, there is a "Set Bulk Animation Speed" function that sets the entire animation to a set frame speed. -Improved the drag and drop function. -Changed some pop up dialogs to child dialogs to prevent multiple extra windows. -Changed the "EDIT AUDIO" button text to "EDIT MUSIC CUES" to describe the Audio.pck functions more accurately. -Changed the main tree's double click event to a NodeMouseDoubleClick event to prevent a rare crash and optimize that event's code. -Adjusted the max display size for large images so that the meta tree would no longer be blocked.
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
this.metroLabel2 = new MetroFramework.Controls.MetroLabel();
|
||||
this.metroLabel3 = new MetroFramework.Controls.MetroLabel();
|
||||
this.metroLabel4 = new MetroFramework.Controls.MetroLabel();
|
||||
this.metroLabel5 = new MetroFramework.Controls.MetroLabel();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
@@ -53,9 +54,9 @@
|
||||
this.metroLabel1.AutoSize = true;
|
||||
this.metroLabel1.Location = new System.Drawing.Point(6, 333);
|
||||
this.metroLabel1.Name = "metroLabel1";
|
||||
this.metroLabel1.Size = new System.Drawing.Size(323, 19);
|
||||
this.metroLabel1.Size = new System.Drawing.Size(250, 19);
|
||||
this.metroLabel1.TabIndex = 1;
|
||||
this.metroLabel1.Text = "Restored and maintained By PhoenixARC and MattNL";
|
||||
this.metroLabel1.Text = "Restored and maintained by PhoenixARC";
|
||||
this.metroLabel1.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.metroLabel1.Click += new System.EventHandler(this.metroLabel1_Click);
|
||||
//
|
||||
@@ -72,7 +73,7 @@
|
||||
// metroLabel3
|
||||
//
|
||||
this.metroLabel3.AutoSize = true;
|
||||
this.metroLabel3.Location = new System.Drawing.Point(4, 363);
|
||||
this.metroLabel3.Location = new System.Drawing.Point(4, 367);
|
||||
this.metroLabel3.Name = "metroLabel3";
|
||||
this.metroLabel3.Size = new System.Drawing.Size(212, 19);
|
||||
this.metroLabel3.TabIndex = 3;
|
||||
@@ -82,23 +83,34 @@
|
||||
// metroLabel4
|
||||
//
|
||||
this.metroLabel4.AutoSize = true;
|
||||
this.metroLabel4.Location = new System.Drawing.Point(331, 363);
|
||||
this.metroLabel4.Location = new System.Drawing.Point(331, 367);
|
||||
this.metroLabel4.Name = "metroLabel4";
|
||||
this.metroLabel4.Size = new System.Drawing.Size(199, 19);
|
||||
this.metroLabel4.TabIndex = 4;
|
||||
this.metroLabel4.Text = "3D renderer found by Newagent";
|
||||
this.metroLabel4.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
//
|
||||
// metroLabel5
|
||||
//
|
||||
this.metroLabel5.AutoSize = true;
|
||||
this.metroLabel5.Location = new System.Drawing.Point(4, 350);
|
||||
this.metroLabel5.Name = "metroLabel5";
|
||||
this.metroLabel5.Size = new System.Drawing.Size(236, 19);
|
||||
this.metroLabel5.TabIndex = 5;
|
||||
this.metroLabel5.Text = "Additional code and utilities by MattNL";
|
||||
this.metroLabel5.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
//
|
||||
// programInfo
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BorderStyle = MetroFramework.Forms.MetroFormBorderStyle.FixedSingle;
|
||||
this.ClientSize = new System.Drawing.Size(602, 392);
|
||||
this.Controls.Add(this.metroLabel1);
|
||||
this.Controls.Add(this.metroLabel5);
|
||||
this.Controls.Add(this.metroLabel4);
|
||||
this.Controls.Add(this.metroLabel3);
|
||||
this.Controls.Add(this.metroLabel2);
|
||||
this.Controls.Add(this.metroLabel1);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.DisplayHeader = false;
|
||||
this.MaximizeBox = false;
|
||||
@@ -125,5 +137,6 @@
|
||||
private MetroFramework.Controls.MetroLabel metroLabel2;
|
||||
private MetroFramework.Controls.MetroLabel metroLabel3;
|
||||
private MetroFramework.Controls.MetroLabel metroLabel4;
|
||||
}
|
||||
private MetroFramework.Controls.MetroLabel metroLabel5;
|
||||
}
|
||||
}
|
||||
2
MinecraftUSkinEditor/Forms/Form1.Designer.cs
generated
2
MinecraftUSkinEditor/Forms/Form1.Designer.cs
generated
@@ -907,7 +907,7 @@
|
||||
this.treeViewMain.Name = "treeViewMain";
|
||||
this.myTablePanelPckEdit.SetRowSpan(this.treeViewMain, 6);
|
||||
this.treeViewMain.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.selectNode);
|
||||
this.treeViewMain.DoubleClick += new System.EventHandler(this.treeView1_DoubleClick);
|
||||
this.treeViewMain.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView1_DoubleClick);
|
||||
this.treeViewMain.KeyDown += new System.Windows.Forms.KeyEventHandler(this.treeViewMain_KeyDown);
|
||||
this.treeViewMain.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeViewMain_ItemDrag);
|
||||
this.treeViewMain.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeViewMain_DragEnter);
|
||||
|
||||
@@ -292,6 +292,17 @@ namespace PckStudio
|
||||
meta.Tag = entry;
|
||||
treeMeta.Nodes.Add(meta);
|
||||
|
||||
//Check for Animated Texture
|
||||
if ((mf.name.StartsWith("res/textures/blocks/") || mf.name.StartsWith("res/textures/items/")) && (!mf.name.EndsWith("clock.png") && (!mf.name.EndsWith("compass.png"))))
|
||||
{
|
||||
buttonEdit.Text = "EDIT TEXTURE ANIMATION";
|
||||
buttonEdit.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
buttonEdit.Visible = false;
|
||||
}
|
||||
|
||||
//Check for if file contains model data
|
||||
if (entry[0].ToString()=="BOX")
|
||||
{
|
||||
@@ -344,7 +355,7 @@ namespace PckStudio
|
||||
else
|
||||
{
|
||||
//Sets images to appear at largest relative size to program window size
|
||||
Size maxDisplay = new Size(tabPage1.Size.Width / 2 - 5, tabPage1.Size.Height / 2 - 5);
|
||||
Size maxDisplay = new Size((tabPage1.Size.Width / 2 - 5) / 3, (tabPage1.Size.Height / 2 - 5) / 3);
|
||||
if (skinPicture.Size.Width > maxDisplay.Width)
|
||||
{
|
||||
//calculate aspect ratio
|
||||
@@ -419,7 +430,7 @@ namespace PckStudio
|
||||
}
|
||||
else if (Path.GetFileName(mf.name) == "audio.pck")
|
||||
{
|
||||
buttonEdit.Text = "EDIT AUDIO";
|
||||
buttonEdit.Text = "EDIT MUSIC CUES";
|
||||
buttonEdit.Visible = true;
|
||||
}
|
||||
else
|
||||
@@ -1027,7 +1038,6 @@ namespace PckStudio
|
||||
#region deciphers what happens when certain pck entries are double clicked
|
||||
private void treeView1_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
if (treeViewMain.SelectedNode.ImageIndex < 0) return;
|
||||
if (treeViewMain.SelectedNode.Tag != null)
|
||||
{
|
||||
mf = (PCK.MineFile)treeViewMain.SelectedNode.Tag;
|
||||
@@ -1062,6 +1072,7 @@ namespace PckStudio
|
||||
{
|
||||
PckStudio.Forms.Utilities.AudioEditor diag = new PckStudio.Forms.Utilities.AudioEditor(mf.data, mf);
|
||||
diag.ShowDialog(this);
|
||||
diag.Dispose();
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
@@ -1082,7 +1093,8 @@ namespace PckStudio
|
||||
try
|
||||
{
|
||||
PckStudio.Forms.Utilities.COLEditor diag = new PckStudio.Forms.Utilities.COLEditor(mf.data, mf);
|
||||
diag.Show();
|
||||
diag.ShowDialog(this);
|
||||
diag.Dispose();
|
||||
}
|
||||
catch
|
||||
{
|
||||
@@ -1309,12 +1321,6 @@ namespace PckStudio
|
||||
{
|
||||
DoDragDrop(e.Item, DragDropEffects.Move);
|
||||
}
|
||||
|
||||
// Copy the dragged node when the right mouse button is used.
|
||||
else if (e.Button == MouseButtons.Right)
|
||||
{
|
||||
DoDragDrop(e.Item, DragDropEffects.Copy);
|
||||
}
|
||||
}
|
||||
|
||||
// Set the target drop effect to the effect
|
||||
@@ -1370,27 +1376,13 @@ namespace PckStudio
|
||||
}
|
||||
else // Move file aside
|
||||
{
|
||||
if(targetNode.Parent != null)
|
||||
if (targetNode.Parent != null)
|
||||
{
|
||||
if (draggedNode.Index < targetNode.Index)
|
||||
{
|
||||
targetNode.Parent.Nodes.Insert(targetIndex - 1, draggedNode);
|
||||
}
|
||||
else
|
||||
{
|
||||
targetNode.Parent.Nodes.Insert(targetIndex, draggedNode);
|
||||
}
|
||||
targetNode.Parent.Nodes.Insert(targetIndex, draggedNode);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (draggedNode.Index < targetNode.Index)
|
||||
{
|
||||
treeViewMain.Nodes.Insert(targetIndex - 1, draggedNode);
|
||||
}
|
||||
else
|
||||
{
|
||||
treeViewMain.Nodes.Insert(targetIndex, draggedNode);
|
||||
}
|
||||
treeView1.Nodes.Insert(targetIndex, draggedNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3627,24 +3619,56 @@ namespace PckStudio
|
||||
using (var ms = new MemoryStream(mf.data))
|
||||
{
|
||||
SkinPreview frm = new SkinPreview(Image.FromStream(ms));
|
||||
frm.Show();
|
||||
frm.ShowDialog(this);
|
||||
frm.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Check for Animated Texture
|
||||
if (mf.name.StartsWith("res/textures/blocks/") || mf.name.StartsWith("res/textures/items/"))
|
||||
{
|
||||
try
|
||||
{
|
||||
PckStudio.AnimationEditor diag = new PckStudio.AnimationEditor(mf);
|
||||
diag.ShowDialog(this);
|
||||
diag.Dispose();
|
||||
|
||||
treeMeta.Nodes.Clear();
|
||||
foreach (int type in types.Keys)
|
||||
comboBox1.Items.Add(types[type]);
|
||||
|
||||
//loads all of selected minefiles metadata into metadata treeview
|
||||
foreach (object[] entry in file.entries)
|
||||
{
|
||||
object[] strings = (object[])entry; TreeNode meta = new TreeNode();
|
||||
|
||||
foreach (object[] entryy in file.entries)
|
||||
meta.Text = (string)strings[0];
|
||||
meta.Tag = entry;
|
||||
treeMeta.Nodes.Add(meta);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
MessageBox.Show("Invalid animation data.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (Path.GetFileName(mf.name) == "audio.pck")
|
||||
{
|
||||
try
|
||||
{
|
||||
PckStudio.Forms.Utilities.AudioEditor diag = new PckStudio.Forms.Utilities.AudioEditor(mf.data, mf);
|
||||
diag.Show();
|
||||
}
|
||||
catch
|
||||
{
|
||||
MessageBox.Show("Invalid data", "Error", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
PckStudio.Forms.Utilities.AudioEditor diag = new PckStudio.Forms.Utilities.AudioEditor(mf.data, mf);
|
||||
diag.ShowDialog(this);
|
||||
diag.Dispose();
|
||||
}
|
||||
catch
|
||||
{
|
||||
MessageBox.Show("Invalid data", "Error", MessageBoxButtons.OK,MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (Path.GetExtension(mf.name) == ".loc")
|
||||
@@ -3674,7 +3698,8 @@ namespace PckStudio
|
||||
try
|
||||
{
|
||||
PckStudio.Forms.Utilities.COLEditor diag = new PckStudio.Forms.Utilities.COLEditor(mf.data, mf);
|
||||
diag.Show();
|
||||
diag.ShowDialog(this);
|
||||
diag.Dispose();
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
198
MinecraftUSkinEditor/Forms/Utilities/Animation/FrameEditor.Designer.cs
generated
Normal file
198
MinecraftUSkinEditor/Forms/Utilities/Animation/FrameEditor.Designer.cs
generated
Normal file
@@ -0,0 +1,198 @@
|
||||
|
||||
namespace PckStudio.Forms.Utilities.AnimationEditor
|
||||
{
|
||||
partial class FrameEditor
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.metroTextBox1 = new MetroFramework.Controls.MetroTextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.metroTextBox2 = new MetroFramework.Controls.MetroTextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.button1.ForeColor = System.Drawing.Color.White;
|
||||
this.button1.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||
this.button1.Location = new System.Drawing.Point(55, 111);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||
this.button1.TabIndex = 7;
|
||||
this.button1.Text = "Save";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.ForeColor = System.Drawing.Color.White;
|
||||
this.label2.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||
this.label2.Location = new System.Drawing.Point(9, 54);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(36, 13);
|
||||
this.label2.TabIndex = 6;
|
||||
this.label2.Text = "Frame";
|
||||
//
|
||||
// metroTextBox1
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
this.metroTextBox1.CustomButton.Image = null;
|
||||
this.metroTextBox1.CustomButton.Location = new System.Drawing.Point(157, 1);
|
||||
this.metroTextBox1.CustomButton.Name = "";
|
||||
this.metroTextBox1.CustomButton.Size = new System.Drawing.Size(21, 21);
|
||||
this.metroTextBox1.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
|
||||
this.metroTextBox1.CustomButton.TabIndex = 1;
|
||||
this.metroTextBox1.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
|
||||
this.metroTextBox1.CustomButton.UseSelectable = true;
|
||||
this.metroTextBox1.CustomButton.Visible = false;
|
||||
this.metroTextBox1.Lines = new string[0];
|
||||
this.metroTextBox1.Location = new System.Drawing.Point(77, 51);
|
||||
this.metroTextBox1.MaxLength = 4;
|
||||
this.metroTextBox1.Name = "metroTextBox1";
|
||||
this.metroTextBox1.PasswordChar = '\0';
|
||||
this.metroTextBox1.ScrollBars = System.Windows.Forms.ScrollBars.None;
|
||||
this.metroTextBox1.SelectedText = "";
|
||||
this.metroTextBox1.SelectionLength = 0;
|
||||
this.metroTextBox1.SelectionStart = 0;
|
||||
this.metroTextBox1.ShortcutsEnabled = true;
|
||||
this.metroTextBox1.Size = new System.Drawing.Size(179, 23);
|
||||
this.metroTextBox1.TabIndex = 9;
|
||||
this.metroTextBox1.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.metroTextBox1.UseSelectable = true;
|
||||
this.metroTextBox1.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109)))));
|
||||
this.metroTextBox1.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel);
|
||||
this.metroTextBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.ForeColor = System.Drawing.Color.White;
|
||||
this.label1.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||
this.label1.Location = new System.Drawing.Point(9, 83);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(62, 13);
|
||||
this.label1.TabIndex = 10;
|
||||
this.label1.Text = "Frame Time";
|
||||
//
|
||||
// metroTextBox2
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
this.metroTextBox2.CustomButton.Image = null;
|
||||
this.metroTextBox2.CustomButton.Location = new System.Drawing.Point(157, 1);
|
||||
this.metroTextBox2.CustomButton.Name = "";
|
||||
this.metroTextBox2.CustomButton.Size = new System.Drawing.Size(21, 21);
|
||||
this.metroTextBox2.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
|
||||
this.metroTextBox2.CustomButton.TabIndex = 1;
|
||||
this.metroTextBox2.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
|
||||
this.metroTextBox2.CustomButton.UseSelectable = true;
|
||||
this.metroTextBox2.CustomButton.Visible = false;
|
||||
this.metroTextBox2.Lines = new string[0];
|
||||
this.metroTextBox2.Location = new System.Drawing.Point(77, 80);
|
||||
this.metroTextBox2.MaxLength = 4;
|
||||
this.metroTextBox2.Name = "metroTextBox2";
|
||||
this.metroTextBox2.PasswordChar = '\0';
|
||||
this.metroTextBox2.ScrollBars = System.Windows.Forms.ScrollBars.None;
|
||||
this.metroTextBox2.SelectedText = "";
|
||||
this.metroTextBox2.SelectionLength = 0;
|
||||
this.metroTextBox2.SelectionStart = 0;
|
||||
this.metroTextBox2.ShortcutsEnabled = true;
|
||||
this.metroTextBox2.Size = new System.Drawing.Size(179, 23);
|
||||
this.metroTextBox2.TabIndex = 11;
|
||||
this.metroTextBox2.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.metroTextBox2.UseSelectable = true;
|
||||
this.metroTextBox2.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109)))));
|
||||
this.metroTextBox2.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel);
|
||||
this.metroTextBox2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.ForeColor = System.Drawing.Color.White;
|
||||
this.label3.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||
this.label3.Location = new System.Drawing.Point(47, 13);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(109, 13);
|
||||
this.label3.TabIndex = 12;
|
||||
this.label3.Text = "may/matt was here :3";
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.button2.ForeColor = System.Drawing.Color.White;
|
||||
this.button2.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||
this.button2.Location = new System.Drawing.Point(135, 111);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(75, 23);
|
||||
this.button2.TabIndex = 13;
|
||||
this.button2.Text = "Cancel";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Click += new System.EventHandler(this.button2_Click);
|
||||
//
|
||||
// FrameEditor
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(264, 140);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.metroTextBox2);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.metroTextBox1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "FrameEditor";
|
||||
this.Resizable = false;
|
||||
this.Style = MetroFramework.MetroColorStyle.Silver;
|
||||
this.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private MetroFramework.Controls.MetroTextBox metroTextBox1;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private MetroFramework.Controls.MetroTextBox metroTextBox2;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Button button2;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using MetroFramework.Forms;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace PckStudio.Forms.Utilities.AnimationEditor
|
||||
{
|
||||
public partial class FrameEditor : MetroForm
|
||||
{
|
||||
bool newF;
|
||||
TreeView tv;
|
||||
TreeNode node;
|
||||
int limit;
|
||||
Tuple<string, string> data = new Tuple<string, string>("","");
|
||||
public FrameEditor(TreeView treeView, Tuple<string, string> frameData, int frameLimit, bool newFrame, TreeNode nodeToEdit)
|
||||
{
|
||||
limit = frameLimit;
|
||||
node = nodeToEdit;
|
||||
data = frameData;
|
||||
tv = treeView;
|
||||
newF = newFrame;
|
||||
InitializeComponent();
|
||||
label3.Text = "Frame must be within 0 and " + frameLimit + ".\nFrame Time must be greater than 0.";
|
||||
metroTextBox1.Text = data.Item1;
|
||||
metroTextBox2.Text = data.Item2;
|
||||
}
|
||||
|
||||
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
|
||||
{
|
||||
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
|
||||
{
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
if(metroTextBox1.Text == "" || metroTextBox2.Text == "") {}
|
||||
else if(Int16.Parse(metroTextBox1.Text) > limit || Int16.Parse(metroTextBox1.Text) < 0 || Int16.Parse(metroTextBox2.Text) < 0) {}
|
||||
else
|
||||
{
|
||||
if(newF)
|
||||
{
|
||||
TreeNode frameNode = new TreeNode();
|
||||
Tuple<string, string> finalFrameData = new Tuple<string, string>(metroTextBox1.Text, metroTextBox2.Text);
|
||||
frameNode.Tag = finalFrameData;
|
||||
frameNode.Text = "Frame: " + metroTextBox1.Text + ", Frame Time: " + metroTextBox2.Text;
|
||||
tv.Nodes.Add(frameNode);
|
||||
}
|
||||
else if(!String.IsNullOrEmpty(data.Item1))
|
||||
{
|
||||
Tuple<string, string> finalFrameData = new Tuple<string, string>(metroTextBox1.Text, metroTextBox2.Text);
|
||||
node.Tag = finalFrameData;
|
||||
node.Text = "Frame: " + metroTextBox1.Text + ", Frame Time: " + metroTextBox2.Text;
|
||||
}
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void button2_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
120
MinecraftUSkinEditor/Forms/Utilities/Animation/FrameEditor.resx
Normal file
120
MinecraftUSkinEditor/Forms/Utilities/Animation/FrameEditor.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
149
MinecraftUSkinEditor/Forms/Utilities/Animation/SetBulkSpeed.Designer.cs
generated
Normal file
149
MinecraftUSkinEditor/Forms/Utilities/Animation/SetBulkSpeed.Designer.cs
generated
Normal file
@@ -0,0 +1,149 @@
|
||||
|
||||
namespace PckStudio.Forms.Utilities.AnimationEditor
|
||||
{
|
||||
partial class SetBulkSpeed
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.metroTextBox2 = new MetroFramework.Controls.MetroTextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.button1.ForeColor = System.Drawing.Color.White;
|
||||
this.button1.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||
this.button1.Location = new System.Drawing.Point(55, 63);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||
this.button1.TabIndex = 7;
|
||||
this.button1.Text = "Save";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.ForeColor = System.Drawing.Color.White;
|
||||
this.label1.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||
this.label1.Location = new System.Drawing.Point(9, 35);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(79, 13);
|
||||
this.label1.TabIndex = 10;
|
||||
this.label1.Text = "Animation Time";
|
||||
//
|
||||
// metroTextBox2
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
this.metroTextBox2.CustomButton.Image = null;
|
||||
this.metroTextBox2.CustomButton.Location = new System.Drawing.Point(140, 1);
|
||||
this.metroTextBox2.CustomButton.Name = "";
|
||||
this.metroTextBox2.CustomButton.Size = new System.Drawing.Size(21, 21);
|
||||
this.metroTextBox2.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
|
||||
this.metroTextBox2.CustomButton.TabIndex = 1;
|
||||
this.metroTextBox2.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
|
||||
this.metroTextBox2.CustomButton.UseSelectable = true;
|
||||
this.metroTextBox2.CustomButton.Visible = false;
|
||||
this.metroTextBox2.Lines = new string[0];
|
||||
this.metroTextBox2.Location = new System.Drawing.Point(94, 32);
|
||||
this.metroTextBox2.MaxLength = 4;
|
||||
this.metroTextBox2.Name = "metroTextBox2";
|
||||
this.metroTextBox2.PasswordChar = '\0';
|
||||
this.metroTextBox2.ScrollBars = System.Windows.Forms.ScrollBars.None;
|
||||
this.metroTextBox2.SelectedText = "";
|
||||
this.metroTextBox2.SelectionLength = 0;
|
||||
this.metroTextBox2.SelectionStart = 0;
|
||||
this.metroTextBox2.ShortcutsEnabled = true;
|
||||
this.metroTextBox2.Size = new System.Drawing.Size(162, 23);
|
||||
this.metroTextBox2.TabIndex = 11;
|
||||
this.metroTextBox2.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.metroTextBox2.UseSelectable = true;
|
||||
this.metroTextBox2.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109)))));
|
||||
this.metroTextBox2.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel);
|
||||
this.metroTextBox2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.ForeColor = System.Drawing.Color.White;
|
||||
this.label3.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||
this.label3.Location = new System.Drawing.Point(47, 13);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(109, 13);
|
||||
this.label3.TabIndex = 12;
|
||||
this.label3.Text = "may/matt was here :3";
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.button2.ForeColor = System.Drawing.Color.White;
|
||||
this.button2.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||
this.button2.Location = new System.Drawing.Point(135, 63);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(75, 23);
|
||||
this.button2.TabIndex = 13;
|
||||
this.button2.Text = "Cancel";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Click += new System.EventHandler(this.button2_Click);
|
||||
//
|
||||
// SetBulkSpeed
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(264, 94);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.metroTextBox2);
|
||||
this.Controls.Add(this.button1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "SetBulkSpeed";
|
||||
this.Resizable = false;
|
||||
this.Style = MetroFramework.MetroColorStyle.Silver;
|
||||
this.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private MetroFramework.Controls.MetroTextBox metroTextBox2;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Button button2;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using MetroFramework.Forms;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace PckStudio.Forms.Utilities.AnimationEditor
|
||||
{
|
||||
public partial class SetBulkSpeed : MetroForm
|
||||
{
|
||||
TreeView tv;
|
||||
public SetBulkSpeed(TreeView treeView)
|
||||
{
|
||||
tv = treeView;
|
||||
InitializeComponent();
|
||||
label3.Text = "Frame Time must be greater than 0.";
|
||||
}
|
||||
|
||||
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
|
||||
{
|
||||
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
|
||||
{
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
if(metroTextBox2.Text == "") {}
|
||||
else if(Int16.Parse(metroTextBox2.Text) < 0) {}
|
||||
else
|
||||
{
|
||||
int i = 0;
|
||||
foreach (TreeNode nodes in tv.Nodes)
|
||||
{
|
||||
Tuple<string, string> frameData = nodes.Tag as Tuple<string, string>;
|
||||
tv.Nodes.RemoveAt(i);
|
||||
TreeNode frameNode = new TreeNode();
|
||||
Tuple<string, string> finalFrameData = new Tuple<string, string>(frameData.Item1, metroTextBox2.Text);
|
||||
frameNode.Tag = finalFrameData;
|
||||
frameNode.Text = "Frame: " + frameData.Item1 + ", Frame Time: " + metroTextBox2.Text;
|
||||
tv.Nodes.Insert(i, frameNode);
|
||||
i++;
|
||||
}
|
||||
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void button2_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
120
MinecraftUSkinEditor/Forms/Utilities/Animation/SetBulkSpeed.resx
Normal file
120
MinecraftUSkinEditor/Forms/Utilities/Animation/SetBulkSpeed.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
233
MinecraftUSkinEditor/Forms/Utilities/AnimationEditor.Designer.cs
generated
Normal file
233
MinecraftUSkinEditor/Forms/Utilities/AnimationEditor.Designer.cs
generated
Normal file
@@ -0,0 +1,233 @@
|
||||
namespace PckStudio
|
||||
{
|
||||
partial class AnimationEditor
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AnimationEditor));
|
||||
this.treeView1 = new System.Windows.Forms.TreeView();
|
||||
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.addFrameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.removeFrameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.menuStrip = new System.Windows.Forms.MenuStrip();
|
||||
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.bulkAnimationSpeedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.metroCheckBox1 = new MetroFramework.Controls.MetroCheckBox();
|
||||
this.metroButton1 = new MetroFramework.Controls.MetroButton();
|
||||
this.pictureBoxWithInterpolationMode1 = new PckStudio.PictureBoxWithInterpolationMode();
|
||||
this.timer1 = new System.Windows.Forms.Timer(this.components);
|
||||
this.metroButton2 = new MetroFramework.Controls.MetroButton();
|
||||
this.contextMenuStrip1.SuspendLayout();
|
||||
this.menuStrip.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBoxWithInterpolationMode1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// treeView1
|
||||
//
|
||||
this.treeView1.AllowDrop = true;
|
||||
this.treeView1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.treeView1.ContextMenuStrip = this.contextMenuStrip1;
|
||||
this.treeView1.ForeColor = System.Drawing.Color.White;
|
||||
this.treeView1.Location = new System.Drawing.Point(20, 84);
|
||||
this.treeView1.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.treeView1.MaximumSize = new System.Drawing.Size(205, 350);
|
||||
this.treeView1.Name = "treeView1";
|
||||
this.treeView1.Size = new System.Drawing.Size(165, 264);
|
||||
this.treeView1.TabIndex = 15;
|
||||
this.treeView1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView1_ItemDrag);
|
||||
this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect);
|
||||
this.treeView1.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView1_doubleClick);
|
||||
this.treeView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView1_DragDrop);
|
||||
this.treeView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView1_DragEnter);
|
||||
this.treeView1.DragOver += new System.Windows.Forms.DragEventHandler(this.treeView1_DragOver);
|
||||
//
|
||||
// contextMenuStrip1
|
||||
//
|
||||
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.addFrameToolStripMenuItem,
|
||||
this.removeFrameToolStripMenuItem});
|
||||
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
||||
this.contextMenuStrip1.Size = new System.Drawing.Size(181, 70);
|
||||
//
|
||||
// addFrameToolStripMenuItem
|
||||
//
|
||||
this.addFrameToolStripMenuItem.Image = global::PckStudio.Properties.Resources.ExportFile;
|
||||
this.addFrameToolStripMenuItem.Name = "addFrameToolStripMenuItem";
|
||||
this.addFrameToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.addFrameToolStripMenuItem.Text = "Add Frame";
|
||||
this.addFrameToolStripMenuItem.Click += new System.EventHandler(this.addFrameToolStripMenuItem_Click);
|
||||
//
|
||||
// removeFrameToolStripMenuItem
|
||||
//
|
||||
this.removeFrameToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Del;
|
||||
this.removeFrameToolStripMenuItem.Name = "removeFrameToolStripMenuItem";
|
||||
this.removeFrameToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.removeFrameToolStripMenuItem.Text = "Remove Frame";
|
||||
this.removeFrameToolStripMenuItem.Click += new System.EventHandler(this.removeFrameToolStripMenuItem_Click);
|
||||
//
|
||||
// menuStrip
|
||||
//
|
||||
this.menuStrip.AutoSize = false;
|
||||
this.menuStrip.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.fileToolStripMenuItem,
|
||||
this.editToolStripMenuItem});
|
||||
this.menuStrip.Location = new System.Drawing.Point(20, 60);
|
||||
this.menuStrip.Name = "menuStrip";
|
||||
this.menuStrip.Size = new System.Drawing.Size(360, 24);
|
||||
this.menuStrip.TabIndex = 14;
|
||||
this.menuStrip.Text = "menuStrip1";
|
||||
//
|
||||
// fileToolStripMenuItem
|
||||
//
|
||||
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.saveToolStripMenuItem1});
|
||||
this.fileToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
|
||||
this.fileToolStripMenuItem.Text = "File";
|
||||
//
|
||||
// saveToolStripMenuItem1
|
||||
//
|
||||
this.saveToolStripMenuItem1.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripMenuItem1.Image")));
|
||||
this.saveToolStripMenuItem1.Name = "saveToolStripMenuItem1";
|
||||
this.saveToolStripMenuItem1.Size = new System.Drawing.Size(180, 22);
|
||||
this.saveToolStripMenuItem1.Text = "Save";
|
||||
this.saveToolStripMenuItem1.Click += new System.EventHandler(this.saveToolStripMenuItem1_Click);
|
||||
//
|
||||
// editToolStripMenuItem
|
||||
//
|
||||
this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.bulkAnimationSpeedToolStripMenuItem});
|
||||
this.editToolStripMenuItem.ForeColor = System.Drawing.Color.White;
|
||||
this.editToolStripMenuItem.Name = "editToolStripMenuItem";
|
||||
this.editToolStripMenuItem.Size = new System.Drawing.Size(39, 20);
|
||||
this.editToolStripMenuItem.Text = "Edit";
|
||||
//
|
||||
// bulkAnimationSpeedToolStripMenuItem
|
||||
//
|
||||
this.bulkAnimationSpeedToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace;
|
||||
this.bulkAnimationSpeedToolStripMenuItem.Name = "bulkAnimationSpeedToolStripMenuItem";
|
||||
this.bulkAnimationSpeedToolStripMenuItem.Size = new System.Drawing.Size(210, 22);
|
||||
this.bulkAnimationSpeedToolStripMenuItem.Text = "Set Bulk Animation Speed";
|
||||
this.bulkAnimationSpeedToolStripMenuItem.Click += new System.EventHandler(this.bulkAnimationSpeedToolStripMenuItem_Click);
|
||||
//
|
||||
// metroCheckBox1
|
||||
//
|
||||
this.metroCheckBox1.AutoSize = true;
|
||||
this.metroCheckBox1.Location = new System.Drawing.Point(188, 285);
|
||||
this.metroCheckBox1.Name = "metroCheckBox1";
|
||||
this.metroCheckBox1.Size = new System.Drawing.Size(85, 15);
|
||||
this.metroCheckBox1.TabIndex = 17;
|
||||
this.metroCheckBox1.Text = "Interpolates";
|
||||
this.metroCheckBox1.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.metroCheckBox1.UseSelectable = true;
|
||||
this.metroCheckBox1.CheckedChanged += new System.EventHandler(this.metroCheckBox1_CheckedChanged);
|
||||
//
|
||||
// metroButton1
|
||||
//
|
||||
this.metroButton1.Location = new System.Drawing.Point(188, 306);
|
||||
this.metroButton1.Name = "metroButton1";
|
||||
this.metroButton1.Size = new System.Drawing.Size(103, 24);
|
||||
this.metroButton1.TabIndex = 18;
|
||||
this.metroButton1.Text = "Play Animation";
|
||||
this.metroButton1.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.metroButton1.UseSelectable = true;
|
||||
this.metroButton1.Click += new System.EventHandler(this.metroButton1_Click);
|
||||
//
|
||||
// pictureBoxWithInterpolationMode1
|
||||
//
|
||||
this.pictureBoxWithInterpolationMode1.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
|
||||
this.pictureBoxWithInterpolationMode1.Location = new System.Drawing.Point(188, 88);
|
||||
this.pictureBoxWithInterpolationMode1.Name = "pictureBoxWithInterpolationMode1";
|
||||
this.pictureBoxWithInterpolationMode1.Size = new System.Drawing.Size(192, 192);
|
||||
this.pictureBoxWithInterpolationMode1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.pictureBoxWithInterpolationMode1.TabIndex = 16;
|
||||
this.pictureBoxWithInterpolationMode1.TabStop = false;
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Interval = 25;
|
||||
this.timer1.Tick += new System.EventHandler(this.animate);
|
||||
//
|
||||
// metroButton2
|
||||
//
|
||||
this.metroButton2.Enabled = false;
|
||||
this.metroButton2.Location = new System.Drawing.Point(293, 306);
|
||||
this.metroButton2.Name = "metroButton2";
|
||||
this.metroButton2.Size = new System.Drawing.Size(103, 24);
|
||||
this.metroButton2.TabIndex = 19;
|
||||
this.metroButton2.Text = "Stop Animation";
|
||||
this.metroButton2.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.metroButton2.UseSelectable = true;
|
||||
this.metroButton2.Click += new System.EventHandler(this.metroButton2_Click);
|
||||
//
|
||||
// AnimationEditor
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(400, 356);
|
||||
this.Controls.Add(this.metroButton2);
|
||||
this.Controls.Add(this.metroButton1);
|
||||
this.Controls.Add(this.metroCheckBox1);
|
||||
this.Controls.Add(this.pictureBoxWithInterpolationMode1);
|
||||
this.Controls.Add(this.treeView1);
|
||||
this.Controls.Add(this.menuStrip);
|
||||
this.Name = "AnimationEditor";
|
||||
this.Style = MetroFramework.MetroColorStyle.Silver;
|
||||
this.Text = "Animation Editor";
|
||||
this.Theme = MetroFramework.MetroThemeStyle.Dark;
|
||||
this.contextMenuStrip1.ResumeLayout(false);
|
||||
this.menuStrip.ResumeLayout(false);
|
||||
this.menuStrip.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBoxWithInterpolationMode1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TreeView treeView1;
|
||||
private System.Windows.Forms.MenuStrip menuStrip;
|
||||
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem1;
|
||||
private PictureBoxWithInterpolationMode pictureBoxWithInterpolationMode1;
|
||||
private MetroFramework.Controls.MetroCheckBox metroCheckBox1;
|
||||
private MetroFramework.Controls.MetroButton metroButton1;
|
||||
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
|
||||
private System.Windows.Forms.ToolStripMenuItem addFrameToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem removeFrameToolStripMenuItem;
|
||||
private System.Windows.Forms.Timer timer1;
|
||||
private MetroFramework.Controls.MetroButton metroButton2;
|
||||
private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem bulkAnimationSpeedToolStripMenuItem;
|
||||
}
|
||||
}
|
||||
451
MinecraftUSkinEditor/Forms/Utilities/AnimationEditor.cs
Normal file
451
MinecraftUSkinEditor/Forms/Utilities/AnimationEditor.cs
Normal file
@@ -0,0 +1,451 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using MetroFramework.Forms;
|
||||
using PckStudio;
|
||||
|
||||
namespace PckStudio
|
||||
{
|
||||
public partial class AnimationEditor : MetroForm
|
||||
{
|
||||
PCK.MineFile mf = new PCK.MineFile();
|
||||
List<Image> frames = new List<Image>();
|
||||
Image texture;
|
||||
int frameCount;
|
||||
string lastFrameTime = "1";
|
||||
|
||||
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
Tuple< string, string > frameData = e.Node.Tag as Tuple<string, string>;
|
||||
Console.WriteLine(frameData.Item1 + " --- " + frameData.Item2);
|
||||
if (metroButton1.Enabled)
|
||||
{
|
||||
pictureBoxWithInterpolationMode1.Image = frames[Int16.Parse(frameData.Item1)];
|
||||
}
|
||||
}
|
||||
|
||||
public AnimationEditor(PCK.MineFile MineFile)
|
||||
{
|
||||
mf = MineFile;
|
||||
List<string> strEntries = new List<string>();
|
||||
List<string> strEntryData = new List<string>();
|
||||
|
||||
foreach (object[] entry in mf.entries) //object = metadata entry(name:value)
|
||||
{
|
||||
object[] strings = (object[])entry;
|
||||
TreeNode meta = new TreeNode();
|
||||
|
||||
foreach (object[] entryy in mf.entries)
|
||||
strEntries.Add((string)strings[0]);
|
||||
strEntryData.Add((string)strings[1]);
|
||||
}
|
||||
|
||||
//if (strEntries.Find(entry => entry == "ANIM") == null) throw new System.Exception("ANIM tag is missing. No animation code is present.");
|
||||
|
||||
InitializeComponent();
|
||||
MemoryStream textureMem = new MemoryStream(mf.data);
|
||||
texture = Image.FromStream(textureMem);
|
||||
createFrameList();
|
||||
|
||||
string anim = "";
|
||||
if (strEntries.Find(entry => entry == "ANIM") == null) anim = "";
|
||||
else anim = strEntryData[strEntries.FindIndex(entry => entry == "ANIM")];
|
||||
Console.WriteLine("ANIMATION DATA: " + anim);
|
||||
if (anim.StartsWith("#"))
|
||||
{
|
||||
Console.WriteLine("Interpolate: true");
|
||||
metroCheckBox1.Checked = true;
|
||||
anim = anim.Remove(0, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Interpolate: false");
|
||||
metroCheckBox1.Checked = false;
|
||||
}
|
||||
|
||||
frameCount = texture.Height / texture.Width;
|
||||
|
||||
if (!String.IsNullOrEmpty(anim))
|
||||
{
|
||||
string[] animData = anim.Split(new char[] { ',' });
|
||||
if (String.IsNullOrEmpty(animData.Last())) animData = animData.Take(animData.Length - 1).ToArray();
|
||||
foreach (string frame in animData)
|
||||
{
|
||||
string[] frameData = frame.Split(new char[] { '*' });
|
||||
string outFrame = "";
|
||||
int i = 0;
|
||||
string currentFrame = "";
|
||||
string currentFrameTime = "";
|
||||
foreach (string data in frameData)
|
||||
{
|
||||
string label;
|
||||
string outData;
|
||||
if (i == 0)
|
||||
{
|
||||
outData = data;
|
||||
if (String.IsNullOrEmpty(data)) throw new System.Exception("Invalid animation data");
|
||||
label = "Frame: ";
|
||||
currentFrame = outData;
|
||||
}
|
||||
else
|
||||
{
|
||||
outData = data;
|
||||
// Some textures like the Halloween 2015's Lava texture don't have a
|
||||
// frame time parameter for certain frames. This will detect that and place the last frame time in its place.
|
||||
// This is accurate to console edition behavior.
|
||||
// - MattNL
|
||||
if (String.IsNullOrEmpty(data)) outData = lastFrameTime;
|
||||
label = ", Frame Time: ";
|
||||
currentFrameTime = outData;
|
||||
}
|
||||
outFrame += label + outData;
|
||||
i++;
|
||||
}
|
||||
Console.WriteLine(outFrame);
|
||||
|
||||
TreeNode frameNode = new TreeNode();
|
||||
Tuple<string, string> finalFrameData = new Tuple<string, string>(currentFrame, currentFrameTime);
|
||||
lastFrameTime = currentFrameTime;
|
||||
frameNode.Text = outFrame;
|
||||
frameNode.Tag = finalFrameData;
|
||||
treeView1.Nodes.Add(frameNode);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(int i = 0; i < frameCount; i++)
|
||||
{
|
||||
TreeNode frameNode = new TreeNode();
|
||||
Tuple<string, string> finalFrameData = new Tuple<string, string>(i.ToString(), "1");
|
||||
frameNode.Text = "Frame: " + i.ToString() + ", Frame Time: 1";
|
||||
frameNode.Tag = finalFrameData;
|
||||
treeView1.Nodes.Add(frameNode);
|
||||
}
|
||||
}
|
||||
|
||||
pictureBoxWithInterpolationMode1.Image = frames[0]; //Sets image preview to the first frame of animation (0 for now)
|
||||
Console.WriteLine("Animation Frame Count: " + frameCount);
|
||||
}
|
||||
|
||||
void createFrameList()
|
||||
{
|
||||
int width = texture.Width;
|
||||
int height = texture.Height;
|
||||
int totalFrames = height / width;
|
||||
for (int frameI = 0; frameI < totalFrames; frameI++)
|
||||
{
|
||||
Rectangle frameArea = new Rectangle(new Point(0, frameI * width), new Size(width, width));
|
||||
|
||||
Bitmap frameImage = new Bitmap(width, width);
|
||||
using (Graphics gfx = Graphics.FromImage(frameImage))
|
||||
{
|
||||
gfx.SmoothingMode = SmoothingMode.None;
|
||||
gfx.InterpolationMode = InterpolationMode.NearestNeighbor;
|
||||
gfx.PixelOffsetMode = PixelOffsetMode.HighQuality;
|
||||
|
||||
gfx.DrawImage(texture, new Rectangle(0, 0, frameImage.Width, frameImage.Height), frameArea, GraphicsUnit.Pixel);
|
||||
}
|
||||
|
||||
frames.Add(new Bitmap(frameImage, new Size(width, width)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private int mix(double ratio, int val1, int val2) // Ported from Java Edition code
|
||||
{
|
||||
return (int)(ratio * (double)val1 + (1.0D - ratio) * (double)val2);
|
||||
}
|
||||
|
||||
int animCurrentFrame = 0;
|
||||
int animCurrentFrameTime = 0;
|
||||
int animCurrentTotalFrameTime = -1;
|
||||
Tuple<string, string> currentFrameData = new Tuple<string, string>("","");
|
||||
Image img = null;
|
||||
int nextFrame;
|
||||
int frameCounter = 0; // ported directly from Java Edition code -MattNL
|
||||
Image imgB = null;
|
||||
void animate(object sender, EventArgs e)
|
||||
{
|
||||
if (animCurrentFrameTime > animCurrentTotalFrameTime)
|
||||
{
|
||||
Console.WriteLine(frameCounter + " $$$ " + frameCount);
|
||||
frameCounter = (frameCounter + 1) % frameCount;
|
||||
animCurrentTotalFrameTime = 0;
|
||||
animCurrentFrameTime = 0;
|
||||
if (animCurrentFrame > (treeView1.Nodes.Count - 1)) animCurrentFrame = 0;
|
||||
currentFrameData = treeView1.Nodes[animCurrentFrame].Tag as Tuple<string, string>;
|
||||
pictureBoxWithInterpolationMode1.Image = frames[Int16.Parse(currentFrameData.Item1)];
|
||||
animCurrentTotalFrameTime = Int16.Parse(currentFrameData.Item2);
|
||||
animCurrentFrame++;
|
||||
|
||||
if(metroCheckBox1.Checked)
|
||||
{
|
||||
img = frames[Int16.Parse(currentFrameData.Item1)];
|
||||
nextFrame = animCurrentFrame + 1;
|
||||
if (nextFrame > frameCount - 1) nextFrame = 0;
|
||||
Console.WriteLine(nextFrame);
|
||||
imgB = frames[nextFrame];
|
||||
}
|
||||
}
|
||||
|
||||
// Interpolation Code (Very slow, messy, and resource heavy depending on the resolution!!!)
|
||||
|
||||
/*else if(metroCheckBox1.Checked && (img != null && imgB != null))
|
||||
{
|
||||
double d0 = 1.0D - animCurrentFrame / animCurrentTotalFrameTime;
|
||||
int i = animCurrentFrame;
|
||||
int j = frameCount;
|
||||
int k = (frameCounter + 1) % j;
|
||||
|
||||
for (int l = 0; l < (frames.Count() - 1); ++l)
|
||||
{
|
||||
int i1 = img.Width;
|
||||
int j1 = img.Width;
|
||||
|
||||
Bitmap finalInterpolation = new Bitmap(pictureBoxWithInterpolationMode1.Image);
|
||||
// pictureBoxWithInterpolationMode1.Image.Dispose();
|
||||
// pictureBoxWithInterpolationMode1.Image = null;
|
||||
|
||||
for (int k1 = 0; k1 < j1; ++k1)
|
||||
{
|
||||
for (int l1 = 0; l1 < i1; ++l1)
|
||||
{
|
||||
//Get Both Colours at the pixel point
|
||||
Bitmap imgC = new Bitmap(img);
|
||||
Bitmap imgBC = new Bitmap(imgB);
|
||||
Color col1 = imgC.GetPixel(l1, k1);
|
||||
Color col2 = imgBC.GetPixel(l1, k1);
|
||||
imgC.Dispose();
|
||||
imgC = null;
|
||||
imgBC.Dispose();
|
||||
imgBC = null;
|
||||
|
||||
int i2 = 0;
|
||||
i2 |= col1.A << 24;
|
||||
i2 |= col1.R << 16;
|
||||
i2 |= col1.G << 8;
|
||||
i2 |= col1.B;
|
||||
|
||||
int j2 = 0;
|
||||
j2 |= col2.A << 24;
|
||||
j2 |= col2.R << 16;
|
||||
j2 |= col2.G << 8;
|
||||
j2 |= col2.B;
|
||||
|
||||
int k2 = this.mix(d0, i2 >> 16 & 255, j2 >> 16 & 255);
|
||||
int l2 = this.mix(d0, i2 >> 8 & 255, j2 >> 8 & 255);
|
||||
int i3 = this.mix(d0, i2 & 255, j2 & 255);
|
||||
|
||||
// Create new grayscale RGB colour
|
||||
uint finalColor = (uint)(i2 & -16777216 | k2 << 16 | l2 << 8 | i3);
|
||||
|
||||
byte[] values = BitConverter.GetBytes(finalColor);
|
||||
|
||||
int a = values[3];
|
||||
int b = values[0];
|
||||
int g = values[1];
|
||||
int r = values[2];
|
||||
|
||||
Color newcol = Color.FromArgb(a, r, g, b);
|
||||
|
||||
finalInterpolation.SetPixel(l1, k1, newcol);
|
||||
}
|
||||
}
|
||||
|
||||
pictureBoxWithInterpolationMode1.Image = finalInterpolation;
|
||||
//finalInterpolation.Dispose();
|
||||
finalInterpolation = null;
|
||||
}
|
||||
}
|
||||
*/
|
||||
Console.WriteLine(animCurrentFrame + " - " + animCurrentFrameTime + " - " + animCurrentTotalFrameTime + " - " + (treeView1.Nodes.Count - 1));
|
||||
animCurrentFrameTime++;
|
||||
}
|
||||
|
||||
private void metroButton1_Click(object sender, EventArgs e)
|
||||
{
|
||||
animCurrentFrame = 0;
|
||||
animCurrentFrameTime = 0;
|
||||
animCurrentTotalFrameTime = -1;
|
||||
frameCounter = 0;
|
||||
metroButton1.Enabled = false;
|
||||
metroButton2.Enabled = true;
|
||||
timer1.Start();
|
||||
}
|
||||
|
||||
private void metroButton2_Click(object sender, EventArgs e)
|
||||
{
|
||||
metroButton1.Enabled = true;
|
||||
metroButton2.Enabled = false;
|
||||
timer1.Stop();
|
||||
}
|
||||
|
||||
private void treeView1_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyData == Keys.Delete) treeView1.Nodes.Remove(treeView1.SelectedNode);
|
||||
}
|
||||
|
||||
private void saveToolStripMenuItem1_Click(object sender, EventArgs e)
|
||||
{
|
||||
int animIndex = mf.entries.FindIndex(entry => (string)entry[0] == "ANIM");
|
||||
string animationData = "";
|
||||
if(metroCheckBox1.Checked) animationData += "#"; // does the animation interpolate?
|
||||
foreach (TreeNode node in treeView1.Nodes)
|
||||
{
|
||||
Tuple<string, string> frameData = node.Tag as Tuple<string, string>;
|
||||
animationData += frameData.Item1 + "*" + frameData.Item2 + ",";
|
||||
}
|
||||
animationData.TrimEnd(',');
|
||||
object[] newEntry = new object[]
|
||||
{
|
||||
"ANIM",
|
||||
animationData
|
||||
};
|
||||
if (animIndex != -1) mf.entries[animIndex] = newEntry;
|
||||
else mf.entries.Add(newEntry);
|
||||
}
|
||||
|
||||
// Most of the code below is modified code from this link: https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.treeview.itemdrag?view=windowsdesktop-6.0
|
||||
// - MattNL
|
||||
|
||||
private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
|
||||
{
|
||||
// Move the dragged node when the left mouse button is used.
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
DoDragDrop(e.Item, DragDropEffects.Move);
|
||||
}
|
||||
}
|
||||
|
||||
// Set the target drop effect to the effect
|
||||
// specified in the ItemDrag event handler.
|
||||
private void treeView1_DragEnter(object sender, DragEventArgs e)
|
||||
{
|
||||
e.Effect = e.AllowedEffect;
|
||||
}
|
||||
|
||||
// Select the node under the mouse pointer to indicate the
|
||||
// expected drop location.
|
||||
private void treeView1_DragOver(object sender, DragEventArgs e)
|
||||
{
|
||||
// Retrieve the client coordinates of the mouse position.
|
||||
Point targetPoint = treeView1.PointToClient(new Point(e.X, e.Y));
|
||||
|
||||
// Select the node at the mouse position.
|
||||
treeView1.SelectedNode = treeView1.GetNodeAt(targetPoint);
|
||||
}
|
||||
|
||||
private void treeView1_DragDrop(object sender, DragEventArgs e)
|
||||
{
|
||||
// Retrieve the client coordinates of the drop location.
|
||||
Point targetPoint = treeView1.PointToClient(new Point(e.X, e.Y));
|
||||
|
||||
// Retrieve the node at the drop location.
|
||||
TreeNode targetNode = treeView1.GetNodeAt(targetPoint);
|
||||
|
||||
// Retrieve the node that was dragged.
|
||||
TreeNode draggedNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
|
||||
|
||||
// Confirm that the node at the drop location is not
|
||||
// the dragged node or a descendant of the dragged node.
|
||||
if (targetNode == null)
|
||||
{
|
||||
draggedNode.Remove();
|
||||
treeView1.Nodes.Add(draggedNode);
|
||||
}
|
||||
else if (!draggedNode.Equals(targetNode) && !ContainsNode(draggedNode, targetNode))
|
||||
{
|
||||
// If it is a move operation, remove the node from its current
|
||||
// location and add it to the node at the drop location.
|
||||
|
||||
if (e.Effect == DragDropEffects.Move)
|
||||
{
|
||||
int draggedIndex = draggedNode.Index;
|
||||
int targetIndex = targetNode.Index;
|
||||
draggedNode.Remove();
|
||||
|
||||
if (targetNode.Tag == null) // Add to folder
|
||||
{
|
||||
targetNode.Nodes.Add(draggedNode);
|
||||
}
|
||||
else // Move file aside
|
||||
{
|
||||
if (targetNode.Parent != null)
|
||||
{
|
||||
targetNode.Parent.Nodes.Insert(targetIndex, draggedNode);
|
||||
}
|
||||
else
|
||||
{
|
||||
treeView1.Nodes.Insert(targetIndex, draggedNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Expand the node at the location
|
||||
// to show the dropped node.
|
||||
targetNode.Expand();
|
||||
}
|
||||
}
|
||||
|
||||
// Determine whether one node is a parent
|
||||
// or ancestor of a second node.
|
||||
private bool ContainsNode(TreeNode node1, TreeNode node2)
|
||||
{
|
||||
// Check the parent node of the second node.
|
||||
if (node2.Parent == null) return false;
|
||||
if (node2.Parent.Equals(node1)) return true;
|
||||
|
||||
// If the parent node is not null or equal to the first node,
|
||||
// call the ContainsNode method recursively using the parent of
|
||||
// the second node.
|
||||
return ContainsNode(node1, node2.Parent);
|
||||
}
|
||||
|
||||
private void addFrameToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
PckStudio.Forms.Utilities.AnimationEditor.FrameEditor diag = new PckStudio.Forms.Utilities.AnimationEditor.FrameEditor(
|
||||
treeView1,
|
||||
new Tuple<string, string>("",""),
|
||||
frameCount - 1,
|
||||
true,
|
||||
new TreeNode());
|
||||
diag.ShowDialog(this);
|
||||
diag.Dispose();
|
||||
}
|
||||
|
||||
private void treeView1_doubleClick(object sender, EventArgs e)
|
||||
{
|
||||
PckStudio.Forms.Utilities.AnimationEditor.FrameEditor diag = new PckStudio.Forms.Utilities.AnimationEditor.FrameEditor(
|
||||
treeView1,
|
||||
treeView1.SelectedNode.Tag as Tuple<string, string>,
|
||||
frameCount - 1,
|
||||
false,
|
||||
treeView1.SelectedNode
|
||||
);
|
||||
diag.ShowDialog(this);
|
||||
diag.Dispose();
|
||||
}
|
||||
|
||||
private void removeFrameToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
treeView1.SelectedNode.Remove();
|
||||
}
|
||||
|
||||
private void metroCheckBox1_CheckedChanged(object sender, EventArgs e) {}
|
||||
|
||||
private void bulkAnimationSpeedToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
PckStudio.Forms.Utilities.AnimationEditor.SetBulkSpeed diag = new PckStudio.Forms.Utilities.AnimationEditor.SetBulkSpeed(treeView1);
|
||||
diag.ShowDialog(this);
|
||||
diag.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
140
MinecraftUSkinEditor/Forms/Utilities/AnimationEditor.resx
Normal file
140
MinecraftUSkinEditor/Forms/Utilities/AnimationEditor.resx
Normal file
@@ -0,0 +1,140 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>125, 17</value>
|
||||
</metadata>
|
||||
<metadata name="menuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="saveToolStripMenuItem1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
wwAADsMBx2+oZAAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAADfSURBVDhPYxg8
|
||||
QLt++3yTGbf/Fm599P/Nh49wfPXxq/+rTt37f+Dak/8gOSBgAGEMANIMxGBFyAasPf/0v8GE8//z1t8C
|
||||
y4HU4DIALIluwLpLL+HiMANAGKoNAWASCavv/n/57gPcgOvP3oENOXj7NViOoAFGU6791+k4ghWD5Aga
|
||||
QCyGakMAkODcU89R/I8Ng9TgNADk14dPn/8/c+kqVgySgwUqVBsCwAx49urN/zsPHmPFIDmaGvAXJInN
|
||||
38gYasBfqDYE0K7dOn/Wvut/sfkdGYPUgJI9VNuAAwYGAGn6yvdevWgPAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>280, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -121,6 +121,26 @@
|
||||
<value>127, 8</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="addCategoryStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABSSURBVDhP5c0x
|
||||
DsAgDENRxt7/wmkNSpRGf0CCCZAegxNMM7MlGMp3dIU6dxhKf/QMNxRogeQC8ivw5Vn7C0heJlFA+kL5
|
||||
jWAohxRkde4wnGftBS90axNmphIGAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="addCategoryStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>168, 22</value>
|
||||
</data>
|
||||
<data name="addCategoryStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Add Category</value>
|
||||
</data>
|
||||
<data name="removeCategoryStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>168, 22</value>
|
||||
</data>
|
||||
<data name="removeCategoryStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Remove Category</value>
|
||||
</data>
|
||||
<data name="contextMenuStrip1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>169, 48</value>
|
||||
</data>
|
||||
@@ -159,37 +179,39 @@
|
||||
<data name=">>treeView1.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="addCategoryStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABSSURBVDhP5c0x
|
||||
DsAgDENRxt7/wmkNSpRGf0CCCZAegxNMM7MlGMp3dIU6dxhKf/QMNxRogeQC8ivw5Vn7C0heJlFA+kL5
|
||||
jWAohxRkde4wnGftBS90axNmphIGAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="addCategoryStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>168, 22</value>
|
||||
</data>
|
||||
<data name="addCategoryStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Add Category</value>
|
||||
</data>
|
||||
<data name="removeCategoryStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>168, 22</value>
|
||||
</data>
|
||||
<data name="removeCategoryStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Remove Category</value>
|
||||
</data>
|
||||
<metadata name="menuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>19, 8</value>
|
||||
</metadata>
|
||||
<data name="menuStrip.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="saveToolStripMenuItem1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
wwAADsMBx2+oZAAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAADfSURBVDhPYxg8
|
||||
QLt++3yTGbf/Fm599P/Nh49wfPXxq/+rTt37f+Dak/8gOSBgAGEMANIMxGBFyAasPf/0v8GE8//z1t8C
|
||||
y4HU4DIALIluwLpLL+HiMANAGKoNAWASCavv/n/57gPcgOvP3oENOXj7NViOoAFGU6791+k4ghWD5Aga
|
||||
QCyGakMAkODcU89R/I8Ng9TgNADk14dPn/8/c+kqVgySgwUqVBsCwAx49urN/zsPHmPFIDmaGvAXJInN
|
||||
38gYasBfqDYE0K7dOn/Wvut/sfkdGYPUgJI9VNuAAwYGAGn6yvdevWgPAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="saveToolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>98, 22</value>
|
||||
</data>
|
||||
<data name="saveToolStripMenuItem1.Text" xml:space="preserve">
|
||||
<value>Save</value>
|
||||
</data>
|
||||
<data name="fileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>37, 20</value>
|
||||
</data>
|
||||
<data name="fileToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>File</value>
|
||||
</data>
|
||||
<data name="menuStrip.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>20, 60</value>
|
||||
</data>
|
||||
<data name="menuStrip.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>411, 24</value>
|
||||
<value>410, 24</value>
|
||||
</data>
|
||||
<data name="menuStrip.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>11</value>
|
||||
@@ -209,31 +231,29 @@
|
||||
<data name=">>menuStrip.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="fileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>37, 20</value>
|
||||
</data>
|
||||
<data name="fileToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>File</value>
|
||||
</data>
|
||||
<data name="saveToolStripMenuItem1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
wwAADsMBx2+oZAAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAADfSURBVDhPYxg8
|
||||
QLt++3yTGbf/Fm599P/Nh49wfPXxq/+rTt37f+Dak/8gOSBgAGEMANIMxGBFyAasPf/0v8GE8//z1t8C
|
||||
y4HU4DIALIluwLpLL+HiMANAGKoNAWASCavv/n/57gPcgOvP3oENOXj7NViOoAFGU6791+k4ghWD5Aga
|
||||
QCyGakMAkODcU89R/I8Ng9TgNADk14dPn/8/c+kqVgySgwUqVBsCwAx49urN/zsPHmPFIDmaGvAXJInN
|
||||
38gYasBfqDYE0K7dOn/Wvut/sfkdGYPUgJI9VNuAAwYGAGn6yvdevWgPAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="saveToolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>98, 22</value>
|
||||
</data>
|
||||
<data name="saveToolStripMenuItem1.Text" xml:space="preserve">
|
||||
<value>Save</value>
|
||||
</data>
|
||||
<metadata name="contextMenuStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>282, 8</value>
|
||||
</metadata>
|
||||
<data name="addEntryMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABSSURBVDhP5c0x
|
||||
DsAgDENRxt7/wmkNSpRGf0CCCZAegxNMM7MlGMp3dIU6dxhKf/QMNxRogeQC8ivw5Vn7C0heJlFA+kL5
|
||||
jWAohxRkde4wnGftBS90axNmphIGAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="addEntryMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>147, 22</value>
|
||||
</data>
|
||||
<data name="addEntryMenuItem.Text" xml:space="preserve">
|
||||
<value>Add Entry</value>
|
||||
</data>
|
||||
<data name="removeEntryMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>147, 22</value>
|
||||
</data>
|
||||
<data name="removeEntryMenuItem.Text" xml:space="preserve">
|
||||
<value>Remove Entry</value>
|
||||
</data>
|
||||
<data name="contextMenuStrip2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>148, 48</value>
|
||||
</data>
|
||||
@@ -264,26 +284,6 @@
|
||||
<data name=">>treeView2.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="addEntryMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABSSURBVDhP5c0x
|
||||
DsAgDENRxt7/wmkNSpRGf0CCCZAegxNMM7MlGMp3dIU6dxhKf/QMNxRogeQC8ivw5Vn7C0heJlFA+kL5
|
||||
jWAohxRkde4wnGftBS90axNmphIGAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="addEntryMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>147, 22</value>
|
||||
</data>
|
||||
<data name="addEntryMenuItem.Text" xml:space="preserve">
|
||||
<value>Add Entry</value>
|
||||
</data>
|
||||
<data name="removeEntryMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>147, 22</value>
|
||||
</data>
|
||||
<data name="removeEntryMenuItem.Text" xml:space="preserve">
|
||||
<value>Remove Entry</value>
|
||||
</data>
|
||||
<data name="comboBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>290, 155</value>
|
||||
</data>
|
||||
@@ -351,7 +351,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>metroLabel2.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="metroLabel1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -378,7 +378,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>metroLabel1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
<value>2</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
@@ -390,7 +390,7 @@
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>451, 334</value>
|
||||
<value>450, 330</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Audio Editor</value>
|
||||
|
||||
@@ -372,10 +372,16 @@
|
||||
<Compile Include="Forms\Additional-Popups\rename.Designer.cs">
|
||||
<DependentUpon>rename.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Skins-And-Textures\addCategory.cs">
|
||||
<Compile Include="Forms\Utilities\Animation\SetBulkSpeed.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Skins-And-Textures\addCategory.Designer.cs">
|
||||
<Compile Include="Forms\Utilities\Animation\SetBulkSpeed.Designer.cs">
|
||||
<DependentUpon>SetBulkSpeed.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Utilities\Audio\addCategory.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Utilities\Audio\addCategory.Designer.cs">
|
||||
<DependentUpon>addCategory.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Skins-And-Textures\addMeta.cs">
|
||||
@@ -453,6 +459,18 @@
|
||||
<Compile Include="Forms\Testx-12.Designer.cs">
|
||||
<DependentUpon>Testx-12.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Utilities\AnimationEditor.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Utilities\AnimationEditor.Designer.cs">
|
||||
<DependentUpon>AnimationEditor.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Utilities\Animation\FrameEditor.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Utilities\Animation\FrameEditor.Designer.cs">
|
||||
<DependentUpon>FrameEditor.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Utilities\AudioEditor.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -595,7 +613,10 @@
|
||||
<EmbeddedResource Include="Forms\Additional-Popups\rename.resx">
|
||||
<DependentUpon>rename.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Skins-And-Textures\addCategory.resx">
|
||||
<EmbeddedResource Include="Forms\Utilities\Animation\SetBulkSpeed.resx">
|
||||
<DependentUpon>SetBulkSpeed.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Utilities\Audio\addCategory.resx">
|
||||
<DependentUpon>addCategory.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Skins-And-Textures\addMeta.ja.resx">
|
||||
@@ -663,6 +684,12 @@
|
||||
<EmbeddedResource Include="Forms\Testx-12.resx">
|
||||
<DependentUpon>Testx-12.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Utilities\AnimationEditor.resx">
|
||||
<DependentUpon>AnimationEditor.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Utilities\Animation\FrameEditor.resx">
|
||||
<DependentUpon>FrameEditor.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Utilities\AudioEditor.resx">
|
||||
<DependentUpon>AudioEditor.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
||||
Reference in New Issue
Block a user