From c4b2f53e5db810479aabcd6546191689d551430a Mon Sep 17 00:00:00 2001 From: MayNL Date: Sun, 3 May 2026 13:12:31 -0400 Subject: [PATCH] Added tool to export custom skin and cape icons --- .../Controls/Editor/PckEditor.Designer.cs | 30 +- PCK-Studio/Controls/Editor/PckEditor.cs | 149 +++- PCK-Studio/Controls/Editor/PckEditor.resx | 678 +++++++++++------- 3 files changed, 558 insertions(+), 299 deletions(-) diff --git a/PCK-Studio/Controls/Editor/PckEditor.Designer.cs b/PCK-Studio/Controls/Editor/PckEditor.Designer.cs index 63161eed..636bf9b2 100644 --- a/PCK-Studio/Controls/Editor/PckEditor.Designer.cs +++ b/PCK-Studio/Controls/Editor/PckEditor.Designer.cs @@ -101,6 +101,9 @@ namespace PckStudio.Controls this.bOXVersion1ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.bOXVersion2ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.bOXVersion3ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.exportIconToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.fullBodyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.croppedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.extractToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); this.cloneFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -498,7 +501,8 @@ namespace PckStudio.Controls this.fixSkinDecimalsToolStripMenuItem, this.setSubPCKEndiannessToolStripMenuItem, this.setModelContainerFormatToolStripMenuItem, - this.setSubPCKBOXVersionToolStripMenuItem}); + this.setSubPCKBOXVersionToolStripMenuItem, + this.exportIconToolStripMenuItem}); this.miscFunctionsToolStripMenuItem.Name = "miscFunctionsToolStripMenuItem"; resources.ApplyResources(this.miscFunctionsToolStripMenuItem, "miscFunctionsToolStripMenuItem"); // @@ -691,6 +695,27 @@ namespace PckStudio.Controls resources.ApplyResources(this.bOXVersion3ToolStripMenuItem, "bOXVersion3ToolStripMenuItem"); this.bOXVersion3ToolStripMenuItem.Click += new System.EventHandler(this.setBoxVersion3ToolStripMenuItem_Click); // + // exportIconToolStripMenuItem + // + this.exportIconToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fullBodyToolStripMenuItem, + this.croppedToolStripMenuItem}); + this.exportIconToolStripMenuItem.Name = "exportIconToolStripMenuItem"; + resources.ApplyResources(this.exportIconToolStripMenuItem, "exportIconToolStripMenuItem"); + this.exportIconToolStripMenuItem.Click += new System.EventHandler(this.exportIconToolStripMenuItem_Click); + // + // fullBodyToolStripMenuItem + // + this.fullBodyToolStripMenuItem.Name = "fullBodyToolStripMenuItem"; + resources.ApplyResources(this.fullBodyToolStripMenuItem, "fullBodyToolStripMenuItem"); + this.fullBodyToolStripMenuItem.Click += new System.EventHandler(this.fullBodyToolStripMenuItem_Click); + // + // croppedToolStripMenuItem + // + this.croppedToolStripMenuItem.Name = "croppedToolStripMenuItem"; + resources.ApplyResources(this.croppedToolStripMenuItem, "croppedToolStripMenuItem"); + this.croppedToolStripMenuItem.Click += new System.EventHandler(this.croppedToolStripMenuItem_Click); + // // extractToolStripMenuItem // resources.ApplyResources(this.extractToolStripMenuItem, "extractToolStripMenuItem"); @@ -865,5 +890,8 @@ namespace PckStudio.Controls private ToolStripMenuItem modelsFileBINToolStripMenuItem; private ToolStripMenuItem behavioursFileBINToolStripMenuItem; private ToolStripMenuItem entityMaterialsFileBINToolStripMenuItem; + private ToolStripMenuItem exportIconToolStripMenuItem; + private ToolStripMenuItem fullBodyToolStripMenuItem; + private ToolStripMenuItem croppedToolStripMenuItem; } } \ No newline at end of file diff --git a/PCK-Studio/Controls/Editor/PckEditor.cs b/PCK-Studio/Controls/Editor/PckEditor.cs index a0a738a3..783d660d 100644 --- a/PCK-Studio/Controls/Editor/PckEditor.cs +++ b/PCK-Studio/Controls/Editor/PckEditor.cs @@ -35,6 +35,7 @@ using PckStudio.ModelSupport; using PckStudio.Popups; using PckStudio.Properties; using PckStudio.Rendering; +using PckStudio.Rendering.Texture; using System; using System.Collections.Generic; using System.Diagnostics; @@ -662,6 +663,39 @@ namespace PckStudio.Controls return "classicSkinFileIcon"; // classic skin model icon } + private Image DrawCapeIcon(Image capeTexture) + { + Bitmap customIcon = new Bitmap(Resources.CUSTOM_SKIN_ICON.Width, Resources.CUSTOM_SKIN_ICON.Height); + + float textureScaleX = capeTexture.Width / 64f; // minecraft capes always have a width of 64 + float textureScaleY = capeTexture.Height / 32f; // minecraft capes always have a height of 32 + + float width = 10; + float height = 16; + float depth = 1; + + // this math is basically to ensure the face is stretched if the texture is improper + Rectangle faceRect = new Rectangle( + (int)(depth * textureScaleX), + (int)(depth * textureScaleY), + (int)(width * textureScaleX), + (int)(height * textureScaleY) + ); + + Image capeFace = capeTexture.GetArea(faceRect); + + using (Graphics gfx = Graphics.FromImage(customIcon)) + { + gfx.InterpolationMode = InterpolationMode.NearestNeighbor; + gfx.PixelOffsetMode = PixelOffsetMode.HighQuality; + gfx.SmoothingMode = SmoothingMode.None; + + gfx.DrawImage(capeFace, 56, 12, 145, 232); // position for the cape on the icon + } + + return customIcon; + } + private string GetCapeNodeIconKey(PckAsset cape, bool reset) { if (!Settings.Default.UseCustomCapeIcons) @@ -688,23 +722,6 @@ namespace PckStudio.Controls { Bitmap customIcon = new Bitmap(Resources.CUSTOM_SKIN_ICON.Width, Resources.CUSTOM_SKIN_ICON.Height); - float textureScaleX = capeTexture.Width / 64f; // minecraft capes always have a width of 64 - float textureScaleY = capeTexture.Height / 32f; // minecraft capes always have a height of 32 - - float width = 10; - float height = 16; - float depth = 1; - - // this math is basically to ensure the face is stretched if the texture is improper - Rectangle faceRect = new Rectangle( - (int)(depth * textureScaleX), - (int)(depth * textureScaleY), - (int)(width * textureScaleX), - (int)(height * textureScaleY) - ); - - Image capeFace = capeTexture.GetArea(faceRect); - using (Graphics gfx = Graphics.FromImage(customIcon)) { gfx.InterpolationMode = InterpolationMode.NearestNeighbor; @@ -713,7 +730,7 @@ namespace PckStudio.Controls gfx.Fill(new Rectangle(0, 0, customIcon.Width, customIcon.Height), Color.FromArgb(0xFF, 0x5D, 0x9C, 0xEC)); - gfx.DrawImage(capeFace, 56, 12, 145, 232); // position for the cape on the icon + gfx.DrawImage(DrawCapeIcon(capeTexture), 56, 12, 145, 232); // position for the cape on the icon gfx.DrawImage(Resources.CUSTOM_SKIN_ICON, 0, 0); } @@ -753,6 +770,8 @@ namespace PckStudio.Controls Bitmap customIcon = new Bitmap(skinIconWidth, skinIconHeight); + skin.DrawPaperDoll(xmlVersion: EditorValue.File.xmlVersion).Save("C:\\Users\\MattN\\Pictures\\icontest\\" + skin.Identifier.Id.ToString() + ".png"); + using (Graphics gfx = Graphics.FromImage(customIcon)) { gfx.InterpolationMode = InterpolationMode.NearestNeighbor; @@ -2466,6 +2485,85 @@ namespace PckStudio.Controls treeViewMain.SelectedNode = e.Node; } + private void exportIconToolStripMenuItem_Click(object sender, EventArgs e) + { + if (treeViewMain?.SelectedNode.TryGetTagData(out PckAsset asset) ?? false) + { + if(asset.Type != PckAssetType.CapeFile) + { + return; + } + + using SaveFileDialog saveFileDialog = new SaveFileDialog(); + saveFileDialog.FileName = Path.GetFileName(asset.Filename); + saveFileDialog.Filter = Path.GetExtension(asset.Filename).Replace(".", string.Empty) + " File|*" + Path.GetExtension(asset.Filename); + if (saveFileDialog.ShowDialog(this) != DialogResult.OK || + // Makes sure chosen directory isn't null or whitespace AKA makes sure its usable + string.IsNullOrWhiteSpace(Path.GetDirectoryName(saveFileDialog.FileName))) + { + MessageBox.Show(this, "The chosen directory is invalid. Please choose a different one and try again.", "Node not extracted"); + + return; + } + + Image capeTexture = null; + + try + { + capeTexture = asset.GetTexture(); + } + catch + { + MessageBox.Show(this, "Failed to get image data from Cape", "Icon not exported"); + + return; + } + + DrawCapeIcon(capeTexture).Save(saveFileDialog.FileName); + } + } + + private void exportSkinIcon(bool cropped = false) + { + if (treeViewMain?.SelectedNode.TryGetTagData(out PckAsset asset) ?? false) + { + if (asset.Type != PckAssetType.SkinFile) + { + return; + } + + using SaveFileDialog saveFileDialog = new SaveFileDialog(); + saveFileDialog.FileName = Path.GetFileName(asset.Filename); + saveFileDialog.Filter = Path.GetExtension(asset.Filename).Replace(".", string.Empty) + " File|*" + Path.GetExtension(asset.Filename); + if (saveFileDialog.ShowDialog(this) != DialogResult.OK || + // Makes sure chosen directory isn't null or whitespace AKA makes sure its usable + string.IsNullOrWhiteSpace(Path.GetDirectoryName(saveFileDialog.FileName))) + { + MessageBox.Show(this, "The chosen directory is invalid. Please choose a different one and try again.", "Node not extracted"); + + return; + } + + Skin skin = null; + + try + { + skin = asset.GetSkin(); + } + catch + { + MessageBox.Show(this, "Failed to get skin from node", "Icon not exported"); + + return; + } + + skin.DrawPaperDoll(bustCrop: cropped).Save(saveFileDialog.FileName); + } + } + + private void fullBodyToolStripMenuItem_Click(object sender, EventArgs e) => exportSkinIcon(); + private void croppedToolStripMenuItem_Click(object sender, EventArgs e) => exportSkinIcon(cropped: true); + private void contextMenuPCKEntries_Opening(object sender, System.ComponentModel.CancelEventArgs e) { fixSkinDecimalsToolStripMenuItem.Visible = false; @@ -2476,6 +2574,10 @@ namespace PckStudio.Controls exportToolStripMenuItem.Visible = false; toolStripSeparator5.Visible = false; toolStripSeparator6.Visible = false; + exportIconToolStripMenuItem.Visible = false; + fullBodyToolStripMenuItem.Visible = false; + croppedToolStripMenuItem.Visible = false; + if (treeViewMain?.SelectedNode.TryGetTagData(out PckAsset asset) ?? false) { replaceToolStripMenuItem.Visible = true; @@ -2484,11 +2586,20 @@ namespace PckStudio.Controls toolStripSeparator5.Visible = true; toolStripSeparator6.Visible = true; - switch(asset.Type) + bool customSkinIcons = Settings.Default.UseCustomSkinIcons; + + switch (asset.Type) { case PckAssetType.SkinFile: fixSkinDecimalsToolStripMenuItem.Visible = true; exportToolStripMenuItem.Visible = true; + + exportIconToolStripMenuItem.Visible = customSkinIcons; // only enable if setting is true, no point in exporting custom icons otherwise + fullBodyToolStripMenuItem.Visible = customSkinIcons; // these 2 are sub menu items of export icon - May + croppedToolStripMenuItem.Visible = customSkinIcons; + break; + case PckAssetType.CapeFile: + exportIconToolStripMenuItem.Visible = Settings.Default.UseCustomCapeIcons; break; case PckAssetType.TextureFile: generateMipMapTextureToolStripMenuItem1.Visible = true; diff --git a/PCK-Studio/Controls/Editor/PckEditor.resx b/PCK-Studio/Controls/Editor/PckEditor.resx index f45cc460..2647141f 100644 --- a/PCK-Studio/Controls/Editor/PckEditor.resx +++ b/PCK-Studio/Controls/Editor/PckEditor.resx @@ -905,6 +905,141 @@ 6 + + MetaTab + + + MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + ParametersTabControl + + + 0 + + + Bottom + + + 407, 270 + + + 604, 281 + + + 11 + + + ParametersTabControl + + + MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + $this + + + 7 + + + metroLabel2 + + + MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + MetaTab + + + 2 + + + ParameterTypeTextBox + + + MetroFramework.Controls.MetroTextBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + MetaTab + + + 3 + + + parameterValueTextBox + + + MetroFramework.Controls.MetroTextBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + MetaTab + + + 4 + + + buttonEdit + + + MetroFramework.Controls.MetroButton, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + MetaTab + + + 5 + + + metroLabel1 + + + MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + MetaTab + + + 6 + + + treeParameters + + + System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + MetaTab + + + 7 + + + 4, 38 + + + 5, 5, 5, 5 + + + 596, 239 + + + 0 + + + Parameters + + + MetaTab + + + MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + ParametersTabControl + + + 0 + Bottom, Right @@ -912,7 +1047,7 @@ True - 76, 81 + 76, 75 0, 0 @@ -957,7 +1092,7 @@ False - 215, 51 + 215, 45 146, 20 @@ -1002,7 +1137,7 @@ False - 215, 83 + 215, 77 146, 20 @@ -1026,7 +1161,7 @@ Bottom, Right - 215, 109 + 215, 103 146, 33 @@ -1059,7 +1194,7 @@ True - 138, -26 + 138, -32 0, 0 @@ -1082,56 +1217,6 @@ 301, 19 - - 248, 22 - - - Add Parameter - - - 248, 22 - - - Add BOX Parameter - - - 248, 22 - - - Add Skin Adjustment Parameters - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABPSURBVDhP5ZAx - DgAgCAMZ/f+HMcbYYOmg0UmHY2ibGzB3txNSgMKsHcD9ksBL5wcBPwyPCwLFJBjjVe4LFHGsgEDBAu6x - 4+AxAT9MkYJdKi90axNkwjxWAAAAAElFTkSuQmCC - - - - 205, 22 - - - Add Parameter - - - 205, 22 - - - Add Multiple Parameters - - - 205, 22 - - - Delete Parameter - - - 205, 22 - - - Edit All Parameters - 206, 92 @@ -1165,56 +1250,55 @@ 7 - - 4, 38 + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABPSURBVDhP5ZAx + DgAgCAMZ/f+HMcbYYOmg0UmHY2ibGzB3txNSgMKsHcD9ksBL5wcBPwyPCwLFJBjjVe4LFHGsgEDBAu6x + 4+AxAT9MkYJdKi90axNkwjxWAAAAAElFTkSuQmCC + - - 5, 5, 5, 5 + + 205, 22 - - 596, 239 + + Add Parameter - - 0 + + 248, 22 - - Parameters + + Add Parameter - - MetaTab + + 248, 22 - - MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + Add BOX Parameter - - ParametersTabControl + + 248, 22 - - 0 + + Add Skin Adjustment Parameters - - Bottom + + 205, 22 - - 407, 270 + + Add Multiple Parameters - - 604, 281 + + 205, 22 - - 11 + + Delete Parameter - - ParametersTabControl + + 205, 22 - - MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - $this - - - 7 + + Edit All Parameters True @@ -1246,6 +1330,212 @@ 22, 20 + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAAAwSURBVDhPY/j/ + /z8DJRhDAI5FGf6jYHT5UQPQDEBXTCweTgZgw1gUY8MYAqMGkI4B8bClX7FZFPQAAAAASUVORK5CYII= + + + + 180, 22 + + + Create + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAABoSURBVDhPvcxB + CsAgDAVRL9GLZ+81cj2L0kA61UQoGPjgwnmlPFdrbavZn/AY+alqjjAikCKMZkCIMFoBS4SRn4h8xj4E + Zgj7FCDCfgvwCPstoF1l7DfQ3+xDwELuHECov1/xMcDPuhsgou11NRjL2QAAAABJRU5ErkJggg== + + + + 180, 22 + + + Import + + + 180, 22 + + + Export + + + 177, 6 + + + 223, 22 + + + Set File Type + + + 223, 22 + + + View File Info + + + 223, 22 + + + Generate MipMap Texture + + + 223, 22 + + + Fix Skin Decimals + + + 223, 22 + + + Set Endianness + + + 223, 22 + + + Set Model Container version + + + 223, 22 + + + Set BOX Version + + + 180, 22 + + + Full Body + + + 180, 22 + + + Cropped + + + 223, 22 + + + Export Icon + + + 180, 22 + + + File Functions + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAACOSURBVDhPpZJd + DoAwCIPZzwV2/8NiMGnEwlDjQ+MC9aNDRVXF1HtXEdnK+vB6XYfzGA3ozTlTyGuAPVtrARJMmXxvjHGD + pCYW99Zaamk+AfySLQX8KQBGBnmFBLwcM1SQkCATYnM9ADCN5eslYKfqGo8Av+lMAeCXaJMNwC+VgGpa + pt8AJL4V+CtUwo90ADqxXn/OjxN+AAAAAElFTkSuQmCC + + + + 180, 22 + + + Extract + + + 177, 6 + + + 180, 22 + + + Clone + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAACRJREFUOE9jYMAE/wlgkgBZmpDBqAGjBoDAqAFkGgDThAujAADOGivVQUoauAAA + AABJRU5ErkJggg== + + + + 180, 22 + + + Rename + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAAC4SURBVDhPlVJR + DoUgDFsI/x7A63AvDso/XIBvfNliycCBviXLsLG11BERUYxRmiuEcPyDAbi4vfcyde/I8gyBWuvF1VqT + ZiylJHNFBkb8ZU3mMtzY5BscyJYbi9xzgIBFfnPTM1iRGdMO+XwL7kPUgtqhdrMNUQtaDnGVzyFa2BAi + 2gisYyDmnHsO5m9ZBasxPusQ4UKmc+6cbYOs52OZZtv6zmwbgqUUvGeuJ8J5CM7YsExWDl+wH0Tk2pdR + m6i0AAAAAElFTkSuQmCC + + + + 180, 22 + + + Replace + + + 180, 22 + + + Delete + + + 181, 236 + + + contextMenuPCKEntries + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Left + + + 0 + + + 204, 20 + + + 64, 64 + + + 5, 50 + + + 0 + + + 402, 501 + + + 20 + + + treeViewMain + + + System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 9 + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -1334,19 +1624,6 @@ EntityMaterials.bin - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAAAwSURBVDhPY/j/ - /z8DJRhDAI5FGf6jYHT5UQPQDEBXTCweTgZgw1gUY8MYAqMGkI4B8bClX7FZFPQAAAAASUVORK5CYII= - - - - 147, 22 - - - Create - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -1398,35 +1675,12 @@ Add File - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAABoSURBVDhPvcxB - CsAgDAVRL9GLZ+81cj2L0kA61UQoGPjgwnmlPFdrbavZn/AY+alqjjAikCKMZkCIMFoBS4SRn4h8xj4E - Zgj7FCDCfgvwCPstoF1l7DfQ3+xDwELuHECov1/xMcDPuhsgou11NRjL2QAAAABJRU5ErkJggg== - - - - 147, 22 - - - Import - 185, 22 Export as 3DS Texture - - 147, 22 - - - Export - - - 144, 6 - 222, 22 @@ -1499,30 +1753,6 @@ Entity Materials File (.BIN) - - 223, 22 - - - Set File Type - - - 223, 22 - - - View File Info - - - 223, 22 - - - Generate MipMap Texture - - - 223, 22 - - - Fix Skin Decimals - 100, 22 @@ -1535,12 +1765,6 @@ Little - - 223, 22 - - - Set Endianness - 163, 22 @@ -1559,12 +1783,6 @@ Models Version 3 - - 223, 22 - - - Set Model Container version - 147, 22 @@ -1589,122 +1807,6 @@ BOX Version 3 - - 223, 22 - - - Set BOX Version - - - 147, 22 - - - File Functions - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAACOSURBVDhPpZJd - DoAwCIPZzwV2/8NiMGnEwlDjQ+MC9aNDRVXF1HtXEdnK+vB6XYfzGA3ozTlTyGuAPVtrARJMmXxvjHGD - pCYW99Zaamk+AfySLQX8KQBGBnmFBLwcM1SQkCATYnM9ADCN5eslYKfqGo8Av+lMAeCXaJMNwC+VgGpa - pt8AJL4V+CtUwo90ADqxXn/OjxN+AAAAAElFTkSuQmCC - - - - 147, 22 - - - Extract - - - 144, 6 - - - 147, 22 - - - Clone - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAACRJREFUOE9jYMAE/wlgkgBZmpDBqAGjBoDAqAFkGgDThAujAADOGivVQUoauAAA - AABJRU5ErkJggg== - - - - 147, 22 - - - Rename - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAAC4SURBVDhPlVJR - DoUgDFsI/x7A63AvDso/XIBvfNliycCBviXLsLG11BERUYxRmiuEcPyDAbi4vfcyde/I8gyBWuvF1VqT - ZiylJHNFBkb8ZU3mMtzY5BscyJYbi9xzgIBFfnPTM1iRGdMO+XwL7kPUgtqhdrMNUQtaDnGVzyFa2BAi - 2gisYyDmnHsO5m9ZBasxPusQ4UKmc+6cbYOs52OZZtv6zmwbgqUUvGeuJ8J5CM7YsExWDl+wH0Tk2pdR - m6i0AAAAAElFTkSuQmCC - - - - 147, 22 - - - Replace - - - 147, 22 - - - Delete - - - 148, 214 - - - contextMenuPCKEntries - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Left - - - 0 - - - 204, 20 - - - 64, 64 - - - 5, 50 - - - 0 - - - 402, 501 - - - 20 - - - treeViewMain - - - System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 9 - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -2115,6 +2217,24 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + exportIconToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + fullBodyToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + croppedToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + extractToolStripMenuItem