From b845b3de1dfb2eb5223662962e45d94ba44b1450 Mon Sep 17 00:00:00 2001
From: miku-666 <74728189+NessieHax@users.noreply.github.com>
Date: Fri, 28 Nov 2025 09:08:31 +0100
Subject: [PATCH] PckStudio - Add ViewPanels
---
PCK-Studio/Controls/DefaultPanel.Designer.cs | 339 +++++++++++++
PCK-Studio/Controls/DefaultPanel.cs | 300 +++++++++++
PCK-Studio/Controls/DefaultPanel.resx | 132 +++++
PCK-Studio/Controls/ModelsPanel.Designer.cs | 139 ++++++
PCK-Studio/Controls/ModelsPanel.cs | 103 ++++
PCK-Studio/Controls/ModelsPanel.resx | 120 +++++
.../PckAssetBrowserEditor.Designer.cs | 244 ++-------
PCK-Studio/Controls/PckAssetBrowserEditor.cs | 353 +++----------
.../Controls/PckAssetBrowserEditor.resx | 465 ++++--------------
PCK-Studio/Controls/ViewPanel.cs | 17 +
PCK-Studio/Forms/Editor/CustomSkinEditor.cs | 1 -
PCK-Studio/PckStudio.csproj | 21 +
12 files changed, 1360 insertions(+), 874 deletions(-)
create mode 100644 PCK-Studio/Controls/DefaultPanel.Designer.cs
create mode 100644 PCK-Studio/Controls/DefaultPanel.cs
create mode 100644 PCK-Studio/Controls/DefaultPanel.resx
create mode 100644 PCK-Studio/Controls/ModelsPanel.Designer.cs
create mode 100644 PCK-Studio/Controls/ModelsPanel.cs
create mode 100644 PCK-Studio/Controls/ModelsPanel.resx
create mode 100644 PCK-Studio/Controls/ViewPanel.cs
diff --git a/PCK-Studio/Controls/DefaultPanel.Designer.cs b/PCK-Studio/Controls/DefaultPanel.Designer.cs
new file mode 100644
index 00000000..757d2a11
--- /dev/null
+++ b/PCK-Studio/Controls/DefaultPanel.Designer.cs
@@ -0,0 +1,339 @@
+namespace PckStudio.Controls
+{
+ partial class DefaultPanel
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Component Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DefaultPanel));
+ this.PropertiesTabControl = new MetroFramework.Controls.MetroTabControl();
+ this.MetaTab = new MetroFramework.Controls.MetroTabPage();
+ this.metroLabel2 = new MetroFramework.Controls.MetroLabel();
+ this.buttonEdit = new MetroFramework.Controls.MetroButton();
+ this.metroLabel1 = new MetroFramework.Controls.MetroLabel();
+ this.treeMeta = new System.Windows.Forms.TreeView();
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.displayNameLabel = new System.Windows.Forms.Label();
+ this.previewPictureBox = new PckStudio.ToolboxItems.InterpolationPictureBox();
+ this.skinRenderer = new PckStudio.Rendering.SkinRenderer();
+ this.themeNameLabel = new System.Windows.Forms.Label();
+ this.contextMenuMetaTree = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.addEntryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.addEntryToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+ this.addBOXEntryToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+ this.addANIMEntryToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+ this.addMultipleEntriesToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+ this.deleteEntryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.editAllEntriesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.PropertiesTabControl.SuspendLayout();
+ this.MetaTab.SuspendLayout();
+ this.tableLayoutPanel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.previewPictureBox)).BeginInit();
+ this.contextMenuMetaTree.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // PropertiesTabControl
+ //
+ this.tableLayoutPanel1.SetColumnSpan(this.PropertiesTabControl, 2);
+ this.PropertiesTabControl.Controls.Add(this.MetaTab);
+ this.PropertiesTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.PropertiesTabControl.Location = new System.Drawing.Point(3, 369);
+ this.PropertiesTabControl.Name = "PropertiesTabControl";
+ this.PropertiesTabControl.SelectedIndex = 0;
+ this.PropertiesTabControl.Size = new System.Drawing.Size(907, 322);
+ this.PropertiesTabControl.Style = MetroFramework.MetroColorStyle.Silver;
+ this.PropertiesTabControl.TabIndex = 13;
+ this.PropertiesTabControl.Theme = MetroFramework.MetroThemeStyle.Dark;
+ this.PropertiesTabControl.UseSelectable = true;
+ //
+ // MetaTab
+ //
+ this.MetaTab.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
+ this.MetaTab.Controls.Add(this.metroLabel2);
+ this.MetaTab.Controls.Add(this.buttonEdit);
+ this.MetaTab.Controls.Add(this.metroLabel1);
+ this.MetaTab.Controls.Add(this.treeMeta);
+ this.MetaTab.HorizontalScrollbarBarColor = true;
+ this.MetaTab.HorizontalScrollbarHighlightOnWheel = false;
+ this.MetaTab.HorizontalScrollbarSize = 10;
+ this.MetaTab.Location = new System.Drawing.Point(4, 38);
+ this.MetaTab.Name = "MetaTab";
+ this.MetaTab.Padding = new System.Windows.Forms.Padding(5);
+ this.MetaTab.Size = new System.Drawing.Size(899, 280);
+ this.MetaTab.TabIndex = 0;
+ this.MetaTab.Text = "Properties";
+ this.MetaTab.Theme = MetroFramework.MetroThemeStyle.Dark;
+ this.MetaTab.VerticalScrollbarBarColor = true;
+ this.MetaTab.VerticalScrollbarHighlightOnWheel = false;
+ this.MetaTab.VerticalScrollbarSize = 10;
+ //
+ // metroLabel2
+ //
+ this.metroLabel2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.metroLabel2.AutoSize = true;
+ this.metroLabel2.Location = new System.Drawing.Point(379, 146);
+ this.metroLabel2.Name = "metroLabel2";
+ this.metroLabel2.Size = new System.Drawing.Size(0, 0);
+ this.metroLabel2.TabIndex = 15;
+ this.metroLabel2.Theme = MetroFramework.MetroThemeStyle.Dark;
+ //
+ // buttonEdit
+ //
+ this.buttonEdit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.buttonEdit.Location = new System.Drawing.Point(3, 248);
+ this.buttonEdit.Name = "buttonEdit";
+ this.buttonEdit.Size = new System.Drawing.Size(201, 31);
+ this.buttonEdit.TabIndex = 20;
+ this.buttonEdit.Text = "buttonEdit";
+ this.buttonEdit.Theme = MetroFramework.MetroThemeStyle.Dark;
+ this.buttonEdit.UseSelectable = true;
+ //
+ // metroLabel1
+ //
+ this.metroLabel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.metroLabel1.AutoSize = true;
+ this.metroLabel1.Location = new System.Drawing.Point(441, 39);
+ this.metroLabel1.Name = "metroLabel1";
+ this.metroLabel1.Size = new System.Drawing.Size(0, 0);
+ this.metroLabel1.TabIndex = 13;
+ this.metroLabel1.Theme = MetroFramework.MetroThemeStyle.Dark;
+ //
+ // treeMeta
+ //
+ this.treeMeta.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.treeMeta.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18)))));
+ this.treeMeta.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.treeMeta.ForeColor = System.Drawing.SystemColors.Window;
+ this.treeMeta.Location = new System.Drawing.Point(3, 4);
+ this.treeMeta.Name = "treeMeta";
+ this.treeMeta.PathSeparator = "/";
+ this.treeMeta.Size = new System.Drawing.Size(888, 238);
+ this.treeMeta.TabIndex = 0;
+ this.treeMeta.DoubleClick += new System.EventHandler(this.treeMeta_DoubleClick);
+ //
+ // tableLayoutPanel1
+ //
+ this.tableLayoutPanel1.ColumnCount = 2;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel1.Controls.Add(this.displayNameLabel, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.PropertiesTabControl, 0, 3);
+ this.tableLayoutPanel1.Controls.Add(this.previewPictureBox, 0, 2);
+ this.tableLayoutPanel1.Controls.Add(this.skinRenderer, 1, 2);
+ this.tableLayoutPanel1.Controls.Add(this.themeNameLabel, 0, 1);
+ this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ this.tableLayoutPanel1.RowCount = 4;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 3F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 3F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 47F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 47F));
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(913, 694);
+ this.tableLayoutPanel1.TabIndex = 14;
+ //
+ // displayNameLabel
+ //
+ this.displayNameLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.displayNameLabel.AutoSize = true;
+ this.tableLayoutPanel1.SetColumnSpan(this.displayNameLabel, 2);
+ this.displayNameLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.displayNameLabel.ForeColor = System.Drawing.Color.White;
+ this.displayNameLabel.Location = new System.Drawing.Point(3, 0);
+ this.displayNameLabel.Name = "displayNameLabel";
+ this.displayNameLabel.Size = new System.Drawing.Size(907, 20);
+ this.displayNameLabel.TabIndex = 15;
+ this.displayNameLabel.Text = "name";
+ this.displayNameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // previewPictureBox
+ //
+ this.previewPictureBox.BackgroundInterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default;
+ this.previewPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.previewPictureBox.Image = global::PckStudio.Properties.Resources.NoImageFound;
+ this.previewPictureBox.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.previewPictureBox.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
+ this.previewPictureBox.Location = new System.Drawing.Point(3, 43);
+ this.previewPictureBox.Name = "previewPictureBox";
+ this.previewPictureBox.Size = new System.Drawing.Size(450, 320);
+ this.previewPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+ this.previewPictureBox.TabIndex = 12;
+ this.previewPictureBox.TabStop = false;
+ //
+ // skinRenderer
+ //
+ this.skinRenderer.AllowCameraMovement = false;
+ this.skinRenderer.Animate = true;
+ this.skinRenderer.ArmorTexture = null;
+ this.skinRenderer.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18)))));
+ this.skinRenderer.CapeTexture = null;
+ this.skinRenderer.CenterOnSelect = false;
+ this.skinRenderer.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.skinRenderer.ForeColor = System.Drawing.Color.CornflowerBlue;
+ this.skinRenderer.GuideLineColor = System.Drawing.Color.Empty;
+ this.skinRenderer.HighlightlingColor = System.Drawing.Color.Aqua;
+ this.skinRenderer.Location = new System.Drawing.Point(459, 43);
+ this.skinRenderer.MouseSensetivity = 0.01F;
+ this.skinRenderer.Name = "skinRenderer";
+ this.skinRenderer.RefreshRate = 60;
+ this.skinRenderer.RenderGroundPlane = false;
+ this.skinRenderer.RenderSkyBox = false;
+ this.skinRenderer.SelectedIndex = -1;
+ this.skinRenderer.SelectedIndices = new int[0];
+ this.skinRenderer.ShowArmor = false;
+ this.skinRenderer.ShowBoundingBox = false;
+ this.skinRenderer.ShowGuideLines = false;
+ this.skinRenderer.Size = new System.Drawing.Size(451, 320);
+ this.skinRenderer.TabIndex = 14;
+ this.skinRenderer.Texture = null;
+ this.skinRenderer.Visible = false;
+ this.skinRenderer.VSync = true;
+ //
+ // themeNameLabel
+ //
+ this.themeNameLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.themeNameLabel.AutoSize = true;
+ this.tableLayoutPanel1.SetColumnSpan(this.themeNameLabel, 2);
+ this.themeNameLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.themeNameLabel.ForeColor = System.Drawing.Color.White;
+ this.themeNameLabel.Location = new System.Drawing.Point(3, 20);
+ this.themeNameLabel.Name = "themeNameLabel";
+ this.themeNameLabel.Size = new System.Drawing.Size(907, 20);
+ this.themeNameLabel.TabIndex = 16;
+ this.themeNameLabel.Text = "theme";
+ this.themeNameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // contextMenuMetaTree
+ //
+ this.contextMenuMetaTree.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.addEntryToolStripMenuItem,
+ this.addMultipleEntriesToolStripMenuItem1,
+ this.deleteEntryToolStripMenuItem,
+ this.editAllEntriesToolStripMenuItem});
+ this.contextMenuMetaTree.Name = "contextMenuStrip1";
+ this.contextMenuMetaTree.Size = new System.Drawing.Size(182, 92);
+ //
+ // addEntryToolStripMenuItem
+ //
+ this.addEntryToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.addEntryToolStripMenuItem1,
+ this.addBOXEntryToolStripMenuItem1,
+ this.addANIMEntryToolStripMenuItem1});
+ this.addEntryToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("addEntryToolStripMenuItem.Image")));
+ this.addEntryToolStripMenuItem.Name = "addEntryToolStripMenuItem";
+ this.addEntryToolStripMenuItem.Size = new System.Drawing.Size(181, 22);
+ this.addEntryToolStripMenuItem.Text = "Add Entry";
+ //
+ // addEntryToolStripMenuItem1
+ //
+ this.addEntryToolStripMenuItem1.Name = "addEntryToolStripMenuItem1";
+ this.addEntryToolStripMenuItem1.Size = new System.Drawing.Size(160, 22);
+ this.addEntryToolStripMenuItem1.Text = "Add Entry";
+ this.addEntryToolStripMenuItem1.Click += new System.EventHandler(this.addEntryToolStripMenuItem_Click);
+ //
+ // addBOXEntryToolStripMenuItem1
+ //
+ this.addBOXEntryToolStripMenuItem1.Name = "addBOXEntryToolStripMenuItem1";
+ this.addBOXEntryToolStripMenuItem1.Size = new System.Drawing.Size(160, 22);
+ this.addBOXEntryToolStripMenuItem1.Text = "Add BOX Entry";
+ this.addBOXEntryToolStripMenuItem1.Click += new System.EventHandler(this.addBOXEntryToolStripMenuItem1_Click);
+ //
+ // addANIMEntryToolStripMenuItem1
+ //
+ this.addANIMEntryToolStripMenuItem1.Name = "addANIMEntryToolStripMenuItem1";
+ this.addANIMEntryToolStripMenuItem1.Size = new System.Drawing.Size(160, 22);
+ this.addANIMEntryToolStripMenuItem1.Text = "Add ANIM Entry";
+ this.addANIMEntryToolStripMenuItem1.Click += new System.EventHandler(this.addANIMEntryToolStripMenuItem1_Click);
+ //
+ // addMultipleEntriesToolStripMenuItem1
+ //
+ this.addMultipleEntriesToolStripMenuItem1.Name = "addMultipleEntriesToolStripMenuItem1";
+ this.addMultipleEntriesToolStripMenuItem1.Size = new System.Drawing.Size(181, 22);
+ this.addMultipleEntriesToolStripMenuItem1.Text = "Add Multiple Entries";
+ this.addMultipleEntriesToolStripMenuItem1.Click += new System.EventHandler(this.addMultipleEntriesToolStripMenuItem1_Click);
+ //
+ // deleteEntryToolStripMenuItem
+ //
+ this.deleteEntryToolStripMenuItem.Image = global::PckStudio.Properties.Resources.file_delete;
+ this.deleteEntryToolStripMenuItem.Name = "deleteEntryToolStripMenuItem";
+ this.deleteEntryToolStripMenuItem.Size = new System.Drawing.Size(181, 22);
+ this.deleteEntryToolStripMenuItem.Text = "Delete Entry";
+ //
+ // editAllEntriesToolStripMenuItem
+ //
+ this.editAllEntriesToolStripMenuItem.Name = "editAllEntriesToolStripMenuItem";
+ this.editAllEntriesToolStripMenuItem.Size = new System.Drawing.Size(181, 22);
+ this.editAllEntriesToolStripMenuItem.Click += new System.EventHandler(this.editAllEntriesToolStripMenuItem_Click);
+ //
+ // DefaultPanel
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18)))));
+ this.Controls.Add(this.tableLayoutPanel1);
+ this.Name = "DefaultPanel";
+ this.Size = new System.Drawing.Size(913, 694);
+ this.PropertiesTabControl.ResumeLayout(false);
+ this.MetaTab.ResumeLayout(false);
+ this.MetaTab.PerformLayout();
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.tableLayoutPanel1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.previewPictureBox)).EndInit();
+ this.contextMenuMetaTree.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private PckStudio.ToolboxItems.InterpolationPictureBox previewPictureBox;
+ private MetroFramework.Controls.MetroTabControl PropertiesTabControl;
+ private MetroFramework.Controls.MetroTabPage MetaTab;
+ private MetroFramework.Controls.MetroLabel metroLabel2;
+ private MetroFramework.Controls.MetroButton buttonEdit;
+ private MetroFramework.Controls.MetroLabel metroLabel1;
+ private System.Windows.Forms.TreeView treeMeta;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private System.Windows.Forms.ContextMenuStrip contextMenuMetaTree;
+ private System.Windows.Forms.ToolStripMenuItem addEntryToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem addEntryToolStripMenuItem1;
+ private System.Windows.Forms.ToolStripMenuItem addBOXEntryToolStripMenuItem1;
+ private System.Windows.Forms.ToolStripMenuItem addANIMEntryToolStripMenuItem1;
+ private System.Windows.Forms.ToolStripMenuItem addMultipleEntriesToolStripMenuItem1;
+ private System.Windows.Forms.ToolStripMenuItem deleteEntryToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem editAllEntriesToolStripMenuItem;
+ private Rendering.SkinRenderer skinRenderer;
+ private System.Windows.Forms.Label displayNameLabel;
+ private System.Windows.Forms.Label themeNameLabel;
+ }
+}
diff --git a/PCK-Studio/Controls/DefaultPanel.cs b/PCK-Studio/Controls/DefaultPanel.cs
new file mode 100644
index 00000000..e01520fe
--- /dev/null
+++ b/PCK-Studio/Controls/DefaultPanel.cs
@@ -0,0 +1,300 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Diagnostics;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using OMI.Formats.Pck;
+using PckStudio.Core;
+using PckStudio.Core.Extensions;
+using PckStudio.Core.Skin;
+using PckStudio.Forms.Additional_Popups;
+using PckStudio.Forms.Editor;
+using PckStudio.Properties;
+
+namespace PckStudio.Controls
+{
+ public partial class DefaultPanel : ViewPanel
+ {
+ private PckAsset _currentAsset;
+ private Action _onModified;
+
+ private static readonly Skin _defaultSkin = new Skin("default", Resources.classic_template);
+
+ private string ButtonText
+ {
+ get => buttonEdit.Text;
+ set
+ {
+ buttonEdit.Visible = !string.IsNullOrWhiteSpace(value);
+ buttonEdit.Text = value;
+ }
+ }
+
+ public DefaultPanel()
+ {
+ InitializeComponent();
+ }
+
+
+ private void ReloadMetaTreeView()
+ {
+ treeMeta.Nodes.Clear();
+ if (_currentAsset is not null)
+ {
+ foreach (KeyValuePair property in _currentAsset.GetProperties())
+ {
+ treeMeta.Nodes.CreateNode($"{property.Key}: {property.Value}", property);
+ }
+ }
+ }
+
+ private void treeMeta_KeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.KeyData == Keys.Delete)
+ deleteEntryToolStripMenuItem_Click(sender, e);
+ }
+
+ private void editAllEntriesToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ if (_currentAsset is not null)
+ {
+ IEnumerable props = _currentAsset.SerializeProperties(seperater: " ");
+ using (var input = new MultiTextPrompt(props))
+ {
+ if (input.ShowDialog(this) == DialogResult.OK)
+ {
+ _currentAsset.ClearProperties();
+ _currentAsset.DeserializeProperties(input.TextOutput);
+ ReloadMetaTreeView();
+ _onModified();
+ }
+ }
+ }
+ }
+
+ private void addMultipleEntriesToolStripMenuItem1_Click(object sender, EventArgs e)
+ {
+ if (_currentAsset is not null)
+ {
+ using var input = new MultiTextPrompt();
+ if (input.ShowDialog(this) == DialogResult.OK)
+ {
+ _currentAsset.DeserializeProperties(input.TextOutput);
+ ReloadMetaTreeView();
+ _onModified();
+ }
+ }
+ }
+
+ private void addBOXEntryToolStripMenuItem1_Click(object sender, EventArgs e)
+ {
+ if (_currentAsset is not null)
+ {
+ using BoxEditor diag = new BoxEditor(SkinBOX.DefaultHead, false);
+ if (diag.ShowDialog(this) == DialogResult.OK)
+ {
+ _currentAsset.AddProperty("BOX", diag.Result);
+ ReloadMetaTreeView();
+ _onModified();
+ }
+ return;
+ }
+ }
+
+ private void addANIMEntryToolStripMenuItem1_Click(object sender, EventArgs e)
+ {
+ if (_currentAsset is not null)
+ {
+ using ANIMEditor diag = new ANIMEditor(SkinANIM.Empty);
+ if (diag.ShowDialog(this) == DialogResult.OK)
+ {
+ _currentAsset.AddProperty("ANIM", diag.ResultAnim);
+ ReloadMetaTreeView();
+ _onModified();
+ }
+ return;
+ }
+ }
+
+ private void deleteEntryToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ if (treeMeta.SelectedNode is TreeNode t && t.Tag is KeyValuePair property &&
+ _currentAsset.RemoveProperty(property))
+ {
+ treeMeta.SelectedNode.Remove();
+ _onModified();
+ }
+ }
+
+ private void addEntryToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ if (_currentAsset is not null)
+ {
+ using AddPropertyPrompt addProperty = new AddPropertyPrompt();
+ if (addProperty.ShowDialog(this) == DialogResult.OK)
+ {
+ _currentAsset.AddProperty(addProperty.Property);
+ ReloadMetaTreeView();
+ _onModified();
+ }
+ }
+ }
+
+ private void treeMeta_DoubleClick(object sender, EventArgs e)
+ {
+ if (treeMeta.SelectedNode is TreeNode subnode && subnode.Tag is KeyValuePair property &&
+ _currentAsset is not null)
+ {
+ if (_currentAsset.HasProperty(property.Key))
+ {
+ switch (property.Key)
+ {
+ case "ANIM" when _currentAsset.Type == PckAssetType.SkinFile:
+ try
+ {
+ using ANIMEditor diag = new ANIMEditor(SkinANIM.FromString(property.Value));
+ if (diag.ShowDialog(this) == DialogResult.OK)
+ {
+ _currentAsset.SetProperty(_currentAsset.GetPropertyIndex(property), new KeyValuePair("ANIM", diag.ResultAnim.ToString()));
+ ReloadMetaTreeView();
+ _onModified();
+ }
+ return;
+ }
+ catch (Exception ex)
+ {
+ Debug.WriteLine(ex.Message);
+ Trace.WriteLine("Invalid ANIM value: " + property.Value);
+ MessageBox.Show(this, "Failed to parse ANIM value, aborting to normal functionality. Please make sure the value only includes hexadecimal characters (0-9,A-F) and has no more than 8 characters.");
+ }
+ break;
+
+ case "BOX" when _currentAsset.Type == PckAssetType.SkinFile:
+ try
+ {
+ using BoxEditor diag = new BoxEditor(property.Value, false);
+ if (diag.ShowDialog(this) == DialogResult.OK)
+ {
+ _currentAsset.SetProperty(_currentAsset.GetPropertyIndex(property), new KeyValuePair("BOX", diag.Result.ToString()));
+ ReloadMetaTreeView();
+ _onModified();
+ }
+ return;
+ }
+ catch (Exception ex)
+ {
+ Debug.WriteLine(ex.Message);
+ Trace.WriteLine("Invalid BOX value: " + property.Value);
+ MessageBox.Show(this, "Failed to parse BOX value, aborting to normal functionality.");
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ using (AddPropertyPrompt addProperty = new AddPropertyPrompt(property))
+ {
+ if (addProperty.ShowDialog(this) == DialogResult.OK)
+ {
+ _currentAsset.SetProperty(_currentAsset.GetPropertyIndex(property), addProperty.Property);
+ ReloadMetaTreeView();
+ _onModified();
+ }
+ }
+ }
+ }
+ }
+
+ public override void Reset()
+ {
+ treeMeta.Nodes.Clear();
+ previewPictureBox.Image = Resources.NoImageFound;
+ skinRenderer.Visible = false;
+ displayNameLabel.Visible = false;
+ themeNameLabel.Visible = false;
+ ButtonText = null;
+ _currentAsset = null;
+ _onModified = null;
+ }
+
+ public override void LoadAsset(PckAsset asset, Action onModified)
+ {
+ Reset();
+ _currentAsset = asset;
+ _onModified = onModified;
+ switch (asset.Type)
+ {
+ case PckAssetType.SkinFile:
+ case PckAssetType.CapeFile:
+ case PckAssetType.TextureFile:
+ {
+ previewPictureBox.Image = asset.GetTexture();
+
+ if (skinRenderer.IsInitialized)
+ {
+
+ if (asset.Type == PckAssetType.SkinFile || asset.Type == PckAssetType.CapeFile)
+ {
+ skinRenderer.Visible = true;
+ Skin skin = _defaultSkin;
+ if (asset.Type == PckAssetType.SkinFile)
+ {
+ skin = asset.GetSkin();
+ displayNameLabel.Visible = true;
+ themeNameLabel.Visible = true;
+ displayNameLabel.Text = skin.MetaData.Name;
+ themeNameLabel.Text = skin.MetaData.Theme;
+ }
+ skinRenderer.LoadSkin(skin);
+ if (asset.Type == PckAssetType.CapeFile)
+ skinRenderer.CapeTexture = previewPictureBox.Image;
+ break;
+ }
+ }
+
+ if (asset.Type != PckAssetType.TextureFile)
+ break;
+
+ ResourceLocation resourceLocation = ResourceLocations.GetFromPath(asset.Filename);
+ if (resourceLocation is null || resourceLocation.Category == ResourceCategory.Unknown)
+ break;
+
+ if ((resourceLocation.Category & ResourceCategory.Animation) != 0 && !asset.IsMipmappedFile())
+ ButtonText = "EDIT TILE ANIMATION";
+
+ if ((resourceLocation.Category & ResourceCategory.Atlas) != 0)
+ ButtonText = "EDIT TEXTURE ATLAS";
+
+ if ((resourceLocation.Category & ResourceCategory.Textures) != 0)
+ ButtonText = "EDIT TEXTURE";
+ }
+ break;
+
+ case PckAssetType.LocalisationFile:
+ ButtonText = "EDIT LOC";
+ break;
+
+ case PckAssetType.AudioFile:
+ ButtonText = "EDIT MUSIC CUES";
+ break;
+
+ case PckAssetType.ColourTableFile when asset.Filename == "colours.col":
+ ButtonText = "EDIT COLORS";
+ break;
+
+ case PckAssetType.BehavioursFile when asset.Filename == "behaviours.bin":
+ ButtonText = "EDIT BEHAVIOURS";
+ break;
+ default:
+ break;
+ }
+ ReloadMetaTreeView();
+ }
+ }
+}
diff --git a/PCK-Studio/Controls/DefaultPanel.resx b/PCK-Studio/Controls/DefaultPanel.resx
new file mode 100644
index 00000000..e09455b3
--- /dev/null
+++ b/PCK-Studio/Controls/DefaultPanel.resx
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABSSURBVDhP5c0x
+ DsAgDENRxt7/wmkNSpRGf0CCCZAegxNMM7MlGMp3dIU6dxhKf/QMNxRogeQC8ivw5Vn7C0heJlFA+kL5
+ jWAohxRkde4wnGftBS90axNmphIGAAAAAElFTkSuQmCC
+
+
+
\ No newline at end of file
diff --git a/PCK-Studio/Controls/ModelsPanel.Designer.cs b/PCK-Studio/Controls/ModelsPanel.Designer.cs
new file mode 100644
index 00000000..67b1c4cc
--- /dev/null
+++ b/PCK-Studio/Controls/ModelsPanel.Designer.cs
@@ -0,0 +1,139 @@
+namespace PckStudio.Controls
+{
+ partial class ModelsPanel
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Component Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.modelTreeView = new System.Windows.Forms.TreeView();
+ this.modelRenderer = new PckStudio.Rendering.ModelRenderer();
+ this.textureTreeView = new System.Windows.Forms.TreeView();
+ this.showBoundsCheckBox = new System.Windows.Forms.CheckBox();
+ this.tableLayoutPanel1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // tableLayoutPanel1
+ //
+ this.tableLayoutPanel1.ColumnCount = 2;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 65F));
+ this.tableLayoutPanel1.Controls.Add(this.modelTreeView, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.modelRenderer, 1, 0);
+ this.tableLayoutPanel1.Controls.Add(this.textureTreeView, 1, 2);
+ this.tableLayoutPanel1.Controls.Add(this.showBoundsCheckBox, 1, 1);
+ this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ this.tableLayoutPanel1.RowCount = 3;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 5F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 45F));
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(732, 612);
+ this.tableLayoutPanel1.TabIndex = 0;
+ //
+ // modelTreeView
+ //
+ this.modelTreeView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(15)))), ((int)(((byte)(15)))));
+ this.modelTreeView.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.modelTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.modelTreeView.ForeColor = System.Drawing.SystemColors.Window;
+ this.modelTreeView.Location = new System.Drawing.Point(3, 3);
+ this.modelTreeView.Name = "modelTreeView";
+ this.tableLayoutPanel1.SetRowSpan(this.modelTreeView, 3);
+ this.modelTreeView.Size = new System.Drawing.Size(250, 606);
+ this.modelTreeView.TabIndex = 0;
+ this.modelTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect);
+ //
+ // modelRenderer
+ //
+ this.modelRenderer.AllowCameraMovement = false;
+ this.modelRenderer.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(21)))), ((int)(((byte)(21)))), ((int)(((byte)(21)))));
+ this.modelRenderer.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.modelRenderer.ForeColor = System.Drawing.Color.White;
+ this.modelRenderer.Location = new System.Drawing.Point(259, 3);
+ this.modelRenderer.MouseSensetivity = 0.01F;
+ this.modelRenderer.Name = "modelRenderer";
+ this.modelRenderer.RefreshRate = 60;
+ this.modelRenderer.RenderModelBounds = false;
+ this.modelRenderer.Size = new System.Drawing.Size(470, 300);
+ this.modelRenderer.TabIndex = 1;
+ this.modelRenderer.VSync = true;
+ //
+ // textureTreeView
+ //
+ this.textureTreeView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(15)))), ((int)(((byte)(15)))));
+ this.textureTreeView.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.textureTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.textureTreeView.ForeColor = System.Drawing.SystemColors.Window;
+ this.textureTreeView.Location = new System.Drawing.Point(259, 339);
+ this.textureTreeView.Name = "textureTreeView";
+ this.textureTreeView.ShowLines = false;
+ this.textureTreeView.Size = new System.Drawing.Size(470, 270);
+ this.textureTreeView.TabIndex = 2;
+ this.textureTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.textureTreeView_AfterSelect);
+ //
+ // showBoundsCheckBox
+ //
+ this.showBoundsCheckBox.AutoSize = true;
+ this.showBoundsCheckBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(28)))), ((int)(((byte)(28)))));
+ this.showBoundsCheckBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
+ this.showBoundsCheckBox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.showBoundsCheckBox.Dock = System.Windows.Forms.DockStyle.Right;
+ this.showBoundsCheckBox.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
+ this.showBoundsCheckBox.ForeColor = System.Drawing.Color.White;
+ this.showBoundsCheckBox.Location = new System.Drawing.Point(610, 309);
+ this.showBoundsCheckBox.Name = "showBoundsCheckBox";
+ this.showBoundsCheckBox.Size = new System.Drawing.Size(119, 24);
+ this.showBoundsCheckBox.TabIndex = 3;
+ this.showBoundsCheckBox.Text = "Show Bounding box";
+ this.showBoundsCheckBox.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.showBoundsCheckBox.UseVisualStyleBackColor = false;
+ this.showBoundsCheckBox.CheckedChanged += new System.EventHandler(this.showBoundsCheckBox1_CheckedChanged);
+ //
+ // ModelsPanel
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18)))));
+ this.Controls.Add(this.tableLayoutPanel1);
+ this.Name = "ModelsPanel";
+ this.Size = new System.Drawing.Size(732, 612);
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.tableLayoutPanel1.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private System.Windows.Forms.TreeView modelTreeView;
+ private Rendering.ModelRenderer modelRenderer;
+ private System.Windows.Forms.TreeView textureTreeView;
+ private System.Windows.Forms.CheckBox showBoundsCheckBox;
+ }
+}
diff --git a/PCK-Studio/Controls/ModelsPanel.cs b/PCK-Studio/Controls/ModelsPanel.cs
new file mode 100644
index 00000000..6ce6d126
--- /dev/null
+++ b/PCK-Studio/Controls/ModelsPanel.cs
@@ -0,0 +1,103 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Diagnostics;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using OMI.Formats.Model;
+using OMI.Formats.Pck;
+using OMI.Workers.Model;
+using PckStudio.Core;
+using PckStudio.Core.Extensions;
+using PckStudio.Interfaces;
+using PckStudio.ModelSupport;
+using PckStudio.Rendering.Texture;
+
+namespace PckStudio.Controls
+{
+ public partial class ModelsPanel : ViewPanel
+ {
+ private readonly ITryGet _textures;
+ private readonly ImageList _imageList = new ImageList()
+ {
+ ColorDepth = ColorDepth.Depth32Bit,
+ ImageSize = new Size(32, 32)
+ };
+ private ModelContainer _models;
+
+ public ModelsPanel(ITryGet tryGetTexture)
+ {
+ InitializeComponent();
+ _textures = tryGetTexture;
+ textureTreeView.ImageList = _imageList;
+ }
+
+ public override void LoadAsset(PckAsset asset, Action onChange)
+ {
+ _models = asset.GetData(new ModelFileReader());
+ modelTreeView.Nodes.AddRange(_models.Select(m => new TreeNode(m.Name)).ToArray());
+ if (modelTreeView.Nodes.Count > 0)
+ modelTreeView.SelectedNode = modelTreeView.Nodes[0];
+ modelRenderer.MakeCurrent();
+ }
+
+ public override void Reset()
+ {
+ modelTreeView.Nodes.Clear();
+ textureTreeView.Nodes.Clear();
+ _models = null;
+ }
+
+ private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
+ {
+ string modelName = e?.Node?.Text;
+ modelRenderer.Visible = _models.ContainsModel(modelName);
+ if (!modelRenderer.Visible)
+ return;
+
+ NamedData[] textures = GetModelTextures(modelName, _textures).ToArray();
+
+ _imageList.Images.Clear();
+ textureTreeView.Nodes.Clear();
+
+ foreach ((int i, NamedData item) in textures.enumerate())
+ {
+ _imageList.Images.Add(item.Value);
+ textureTreeView.Nodes.Add(new NamedTextureTreeNode(item) { ImageIndex = i, SelectedImageIndex = i });
+ }
+ if (textures.Length > 0)
+ {
+ modelRenderer.Texture = textures[0].Value;
+ modelRenderer.LoadModel(_models.GetModelByName(modelName));
+ }
+ }
+
+ private static IEnumerable> GetModelTextures(string modelName, ITryGet tryGet)
+ {
+ if (!GameModelImporter.ModelMetaData.ContainsKey(modelName) || GameModelImporter.ModelMetaData[modelName]?.TextureLocations?.Length <= 0)
+ yield break;
+ foreach (var textureLocation in GameModelImporter.ModelMetaData[modelName].TextureLocations)
+ {
+ if (tryGet.TryGet(textureLocation, out Image img))
+ yield return new NamedData(Path.GetFileName(textureLocation), img);
+ }
+ yield break;
+ }
+
+ private void textureTreeView_AfterSelect(object sender, TreeViewEventArgs e)
+ {
+ if (e.Node is NamedTextureTreeNode namedTextureNode)
+ modelRenderer.Texture = namedTextureNode.GetTexture();
+ }
+
+ private void showBoundsCheckBox1_CheckedChanged(object sender, EventArgs e)
+ {
+ modelRenderer.RenderModelBounds = showBoundsCheckBox.Checked;
+ }
+ }
+}
diff --git a/PCK-Studio/Controls/ModelsPanel.resx b/PCK-Studio/Controls/ModelsPanel.resx
new file mode 100644
index 00000000..1af7de15
--- /dev/null
+++ b/PCK-Studio/Controls/ModelsPanel.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/PCK-Studio/Controls/PckAssetBrowserEditor.Designer.cs b/PCK-Studio/Controls/PckAssetBrowserEditor.Designer.cs
index 221b9c09..3522a26c 100644
--- a/PCK-Studio/Controls/PckAssetBrowserEditor.Designer.cs
+++ b/PCK-Studio/Controls/PckAssetBrowserEditor.Designer.cs
@@ -34,16 +34,9 @@ namespace PckStudio.Controls
System.Windows.Forms.PictureBox logoPictureBox;
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PckAssetBrowserEditor));
this.pckFileLabel = new MetroFramework.Controls.MetroLabel();
- this.labelImageSize = new MetroFramework.Controls.MetroLabel();
this.fileEntryCountLabel = new MetroFramework.Controls.MetroLabel();
- this.PropertiesTabControl = new MetroFramework.Controls.MetroTabControl();
- this.MetaTab = new MetroFramework.Controls.MetroTabPage();
this.metroLabel2 = new MetroFramework.Controls.MetroLabel();
- this.entryTypeTextBox = new MetroFramework.Controls.MetroTextBox();
- this.entryDataTextBox = new MetroFramework.Controls.MetroTextBox();
- this.buttonEdit = new MetroFramework.Controls.MetroButton();
this.metroLabel1 = new MetroFramework.Controls.MetroLabel();
- this.treeMeta = new System.Windows.Forms.TreeView();
this.contextMenuMetaTree = new System.Windows.Forms.ContextMenuStrip(this.components);
this.addEntryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addEntryToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
@@ -53,7 +46,6 @@ namespace PckStudio.Controls
this.deleteEntryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.editAllEntriesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.label11 = new MetroFramework.Controls.MetroLabel();
- this.treeViewMain = new System.Windows.Forms.TreeView();
this.contextMenuPCKEntries = new System.Windows.Forms.ContextMenuStrip(this.components);
this.createToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.folderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -104,15 +96,12 @@ namespace PckStudio.Controls
this.deleteFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.imageList = new System.Windows.Forms.ImageList(this.components);
this.addMultipleEntriesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.LittleEndianCheckBox = new MetroFramework.Controls.MetroCheckBox();
- this.previewPictureBox = new PckStudio.ToolboxItems.InterpolationPictureBox();
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.treeViewMain = new System.Windows.Forms.TreeView();
logoPictureBox = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(logoPictureBox)).BeginInit();
- this.PropertiesTabControl.SuspendLayout();
- this.MetaTab.SuspendLayout();
- this.contextMenuMetaTree.SuspendLayout();
this.contextMenuPCKEntries.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.previewPictureBox)).BeginInit();
+ this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// logoPictureBox
@@ -128,223 +117,70 @@ namespace PckStudio.Controls
this.pckFileLabel.Name = "pckFileLabel";
this.pckFileLabel.Theme = MetroFramework.MetroThemeStyle.Dark;
//
- // labelImageSize
- //
- resources.ApplyResources(this.labelImageSize, "labelImageSize");
- this.labelImageSize.Name = "labelImageSize";
- this.labelImageSize.Theme = MetroFramework.MetroThemeStyle.Dark;
- //
// fileEntryCountLabel
//
resources.ApplyResources(this.fileEntryCountLabel, "fileEntryCountLabel");
this.fileEntryCountLabel.Name = "fileEntryCountLabel";
this.fileEntryCountLabel.Theme = MetroFramework.MetroThemeStyle.Dark;
//
- // PropertiesTabControl
- //
- this.PropertiesTabControl.Controls.Add(this.MetaTab);
- resources.ApplyResources(this.PropertiesTabControl, "PropertiesTabControl");
- this.PropertiesTabControl.Name = "PropertiesTabControl";
- this.PropertiesTabControl.SelectedIndex = 0;
- this.PropertiesTabControl.Style = MetroFramework.MetroColorStyle.Silver;
- this.PropertiesTabControl.Theme = MetroFramework.MetroThemeStyle.Dark;
- this.PropertiesTabControl.UseSelectable = true;
- //
- // MetaTab
- //
- this.MetaTab.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
- this.MetaTab.Controls.Add(this.metroLabel2);
- this.MetaTab.Controls.Add(this.entryTypeTextBox);
- this.MetaTab.Controls.Add(this.entryDataTextBox);
- this.MetaTab.Controls.Add(this.buttonEdit);
- this.MetaTab.Controls.Add(this.metroLabel1);
- this.MetaTab.Controls.Add(this.treeMeta);
- this.MetaTab.HorizontalScrollbarBarColor = true;
- this.MetaTab.HorizontalScrollbarHighlightOnWheel = false;
- this.MetaTab.HorizontalScrollbarSize = 10;
- resources.ApplyResources(this.MetaTab, "MetaTab");
- this.MetaTab.Name = "MetaTab";
- this.MetaTab.Theme = MetroFramework.MetroThemeStyle.Dark;
- this.MetaTab.VerticalScrollbarBarColor = true;
- this.MetaTab.VerticalScrollbarHighlightOnWheel = false;
- this.MetaTab.VerticalScrollbarSize = 10;
- //
// metroLabel2
//
resources.ApplyResources(this.metroLabel2, "metroLabel2");
this.metroLabel2.Name = "metroLabel2";
this.metroLabel2.Theme = MetroFramework.MetroThemeStyle.Dark;
//
- // entryTypeTextBox
- //
- resources.ApplyResources(this.entryTypeTextBox, "entryTypeTextBox");
- //
- //
- //
- this.entryTypeTextBox.CustomButton.Image = ((System.Drawing.Image)(resources.GetObject("resource.Image")));
- this.entryTypeTextBox.CustomButton.ImeMode = ((System.Windows.Forms.ImeMode)(resources.GetObject("resource.ImeMode")));
- this.entryTypeTextBox.CustomButton.Location = ((System.Drawing.Point)(resources.GetObject("resource.Location")));
- this.entryTypeTextBox.CustomButton.Name = "";
- this.entryTypeTextBox.CustomButton.Size = ((System.Drawing.Size)(resources.GetObject("resource.Size")));
- this.entryTypeTextBox.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
- this.entryTypeTextBox.CustomButton.TabIndex = ((int)(resources.GetObject("resource.TabIndex")));
- this.entryTypeTextBox.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
- this.entryTypeTextBox.CustomButton.UseSelectable = true;
- this.entryTypeTextBox.CustomButton.Visible = ((bool)(resources.GetObject("resource.Visible")));
- this.entryTypeTextBox.Lines = new string[0];
- this.entryTypeTextBox.MaxLength = 32767;
- this.entryTypeTextBox.Name = "entryTypeTextBox";
- this.entryTypeTextBox.PasswordChar = '\0';
- this.entryTypeTextBox.ScrollBars = System.Windows.Forms.ScrollBars.None;
- this.entryTypeTextBox.SelectedText = "";
- this.entryTypeTextBox.SelectionLength = 0;
- this.entryTypeTextBox.SelectionStart = 0;
- this.entryTypeTextBox.ShortcutsEnabled = true;
- this.entryTypeTextBox.Theme = MetroFramework.MetroThemeStyle.Dark;
- this.entryTypeTextBox.UseSelectable = true;
- this.entryTypeTextBox.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109)))));
- this.entryTypeTextBox.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel);
- //
- // entryDataTextBox
- //
- resources.ApplyResources(this.entryDataTextBox, "entryDataTextBox");
- //
- //
- //
- this.entryDataTextBox.CustomButton.Image = ((System.Drawing.Image)(resources.GetObject("resource.Image1")));
- this.entryDataTextBox.CustomButton.ImeMode = ((System.Windows.Forms.ImeMode)(resources.GetObject("resource.ImeMode1")));
- this.entryDataTextBox.CustomButton.Location = ((System.Drawing.Point)(resources.GetObject("resource.Location1")));
- this.entryDataTextBox.CustomButton.Name = "";
- this.entryDataTextBox.CustomButton.Size = ((System.Drawing.Size)(resources.GetObject("resource.Size1")));
- this.entryDataTextBox.CustomButton.Style = MetroFramework.MetroColorStyle.Blue;
- this.entryDataTextBox.CustomButton.TabIndex = ((int)(resources.GetObject("resource.TabIndex1")));
- this.entryDataTextBox.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light;
- this.entryDataTextBox.CustomButton.UseSelectable = true;
- this.entryDataTextBox.CustomButton.Visible = ((bool)(resources.GetObject("resource.Visible1")));
- this.entryDataTextBox.Lines = new string[0];
- this.entryDataTextBox.MaxLength = 32767;
- this.entryDataTextBox.Name = "entryDataTextBox";
- this.entryDataTextBox.PasswordChar = '\0';
- this.entryDataTextBox.ScrollBars = System.Windows.Forms.ScrollBars.None;
- this.entryDataTextBox.SelectedText = "";
- this.entryDataTextBox.SelectionLength = 0;
- this.entryDataTextBox.SelectionStart = 0;
- this.entryDataTextBox.ShortcutsEnabled = true;
- this.entryDataTextBox.Theme = MetroFramework.MetroThemeStyle.Dark;
- this.entryDataTextBox.UseSelectable = true;
- this.entryDataTextBox.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109)))));
- this.entryDataTextBox.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel);
- //
- // buttonEdit
- //
- resources.ApplyResources(this.buttonEdit, "buttonEdit");
- this.buttonEdit.Name = "buttonEdit";
- this.buttonEdit.Theme = MetroFramework.MetroThemeStyle.Dark;
- this.buttonEdit.UseSelectable = true;
- this.buttonEdit.Click += new System.EventHandler(this.buttonEdit_Click);
- //
// metroLabel1
//
resources.ApplyResources(this.metroLabel1, "metroLabel1");
this.metroLabel1.Name = "metroLabel1";
this.metroLabel1.Theme = MetroFramework.MetroThemeStyle.Dark;
//
- // treeMeta
- //
- this.treeMeta.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(13)))), ((int)(((byte)(13)))), ((int)(((byte)(13)))));
- this.treeMeta.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.treeMeta.ContextMenuStrip = this.contextMenuMetaTree;
- resources.ApplyResources(this.treeMeta, "treeMeta");
- this.treeMeta.ForeColor = System.Drawing.SystemColors.Window;
- this.treeMeta.Name = "treeMeta";
- this.treeMeta.PathSeparator = "/";
- this.treeMeta.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeMeta_AfterSelect);
- this.treeMeta.DoubleClick += new System.EventHandler(this.treeMeta_DoubleClick);
- this.treeMeta.KeyDown += new System.Windows.Forms.KeyEventHandler(this.treeMeta_KeyDown);
- //
// contextMenuMetaTree
//
- this.contextMenuMetaTree.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.addEntryToolStripMenuItem,
- this.addMultipleEntriesToolStripMenuItem1,
- this.deleteEntryToolStripMenuItem,
- this.editAllEntriesToolStripMenuItem});
- this.contextMenuMetaTree.Name = "contextMenuStrip1";
+ this.contextMenuMetaTree.Name = "contextMenuMetaTree";
resources.ApplyResources(this.contextMenuMetaTree, "contextMenuMetaTree");
//
// addEntryToolStripMenuItem
//
- this.addEntryToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.addEntryToolStripMenuItem1,
- this.addBOXEntryToolStripMenuItem1,
- this.addANIMEntryToolStripMenuItem1});
- resources.ApplyResources(this.addEntryToolStripMenuItem, "addEntryToolStripMenuItem");
this.addEntryToolStripMenuItem.Name = "addEntryToolStripMenuItem";
+ resources.ApplyResources(this.addEntryToolStripMenuItem, "addEntryToolStripMenuItem");
//
// addEntryToolStripMenuItem1
//
this.addEntryToolStripMenuItem1.Name = "addEntryToolStripMenuItem1";
resources.ApplyResources(this.addEntryToolStripMenuItem1, "addEntryToolStripMenuItem1");
- this.addEntryToolStripMenuItem1.Click += new System.EventHandler(this.addEntryToolStripMenuItem_Click);
//
// addBOXEntryToolStripMenuItem1
//
this.addBOXEntryToolStripMenuItem1.Name = "addBOXEntryToolStripMenuItem1";
resources.ApplyResources(this.addBOXEntryToolStripMenuItem1, "addBOXEntryToolStripMenuItem1");
- this.addBOXEntryToolStripMenuItem1.Click += new System.EventHandler(this.addBOXEntryToolStripMenuItem1_Click);
//
// addANIMEntryToolStripMenuItem1
//
this.addANIMEntryToolStripMenuItem1.Name = "addANIMEntryToolStripMenuItem1";
resources.ApplyResources(this.addANIMEntryToolStripMenuItem1, "addANIMEntryToolStripMenuItem1");
- this.addANIMEntryToolStripMenuItem1.Click += new System.EventHandler(this.addANIMEntryToolStripMenuItem1_Click);
//
// addMultipleEntriesToolStripMenuItem1
//
this.addMultipleEntriesToolStripMenuItem1.Name = "addMultipleEntriesToolStripMenuItem1";
resources.ApplyResources(this.addMultipleEntriesToolStripMenuItem1, "addMultipleEntriesToolStripMenuItem1");
- this.addMultipleEntriesToolStripMenuItem1.Click += new System.EventHandler(this.addMultipleEntriesToolStripMenuItem1_Click);
//
// deleteEntryToolStripMenuItem
//
this.deleteEntryToolStripMenuItem.Image = global::PckStudio.Properties.Resources.file_delete;
this.deleteEntryToolStripMenuItem.Name = "deleteEntryToolStripMenuItem";
resources.ApplyResources(this.deleteEntryToolStripMenuItem, "deleteEntryToolStripMenuItem");
- this.deleteEntryToolStripMenuItem.Click += new System.EventHandler(this.deleteEntryToolStripMenuItem_Click);
//
// editAllEntriesToolStripMenuItem
//
this.editAllEntriesToolStripMenuItem.Name = "editAllEntriesToolStripMenuItem";
resources.ApplyResources(this.editAllEntriesToolStripMenuItem, "editAllEntriesToolStripMenuItem");
- this.editAllEntriesToolStripMenuItem.Click += new System.EventHandler(this.editAllEntriesToolStripMenuItem_Click);
//
// label11
//
resources.ApplyResources(this.label11, "label11");
this.label11.Name = "label11";
//
- // treeViewMain
- //
- this.treeViewMain.AllowDrop = true;
- this.treeViewMain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(12)))), ((int)(((byte)(12)))));
- this.treeViewMain.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.treeViewMain.ContextMenuStrip = this.contextMenuPCKEntries;
- resources.ApplyResources(this.treeViewMain, "treeViewMain");
- this.treeViewMain.ForeColor = System.Drawing.Color.White;
- this.treeViewMain.ImageList = this.imageList;
- this.treeViewMain.LabelEdit = true;
- this.treeViewMain.Name = "treeViewMain";
- this.treeViewMain.PathSeparator = "/";
- this.treeViewMain.BeforeLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.treeViewMain_BeforeLabelEdit);
- this.treeViewMain.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeViewMain_ItemDrag);
- this.treeViewMain.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewMain_AfterSelect);
- this.treeViewMain.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeViewMain_NodeMouseClick);
- this.treeViewMain.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeViewMain_DragDrop);
- this.treeViewMain.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeViewMain_DragEnter);
- this.treeViewMain.DragOver += new System.Windows.Forms.DragEventHandler(this.treeViewMain_DragOver);
- this.treeViewMain.DoubleClick += new System.EventHandler(this.treeViewMain_DoubleClick);
- this.treeViewMain.KeyDown += new System.Windows.Forms.KeyEventHandler(this.treeViewMain_KeyDown);
- //
// contextMenuPCKEntries
//
this.contextMenuPCKEntries.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -698,48 +534,52 @@ namespace PckStudio.Controls
resources.ApplyResources(this.addMultipleEntriesToolStripMenuItem, "addMultipleEntriesToolStripMenuItem");
this.addMultipleEntriesToolStripMenuItem.Name = "addMultipleEntriesToolStripMenuItem";
//
- // LittleEndianCheckBox
+ // tableLayoutPanel1
//
- resources.ApplyResources(this.LittleEndianCheckBox, "LittleEndianCheckBox");
- this.LittleEndianCheckBox.BackColor = System.Drawing.Color.Transparent;
- this.LittleEndianCheckBox.Name = "LittleEndianCheckBox";
- this.LittleEndianCheckBox.Style = MetroFramework.MetroColorStyle.White;
- this.LittleEndianCheckBox.Theme = MetroFramework.MetroThemeStyle.Dark;
- this.LittleEndianCheckBox.UseSelectable = true;
+ resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
+ this.tableLayoutPanel1.Controls.Add(this.treeViewMain, 0, 0);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
- // previewPictureBox
+ // treeViewMain
//
- resources.ApplyResources(this.previewPictureBox, "previewPictureBox");
- this.previewPictureBox.BackColor = System.Drawing.Color.Transparent;
- this.previewPictureBox.BackgroundInterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default;
- this.previewPictureBox.Image = global::PckStudio.Properties.Resources.NoImageFound;
- this.previewPictureBox.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
- this.previewPictureBox.Name = "previewPictureBox";
- this.previewPictureBox.TabStop = false;
+ this.treeViewMain.AllowDrop = true;
+ this.treeViewMain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(12)))), ((int)(((byte)(12)))));
+ this.treeViewMain.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.treeViewMain.ContextMenuStrip = this.contextMenuPCKEntries;
+ resources.ApplyResources(this.treeViewMain, "treeViewMain");
+ this.treeViewMain.ForeColor = System.Drawing.Color.White;
+ this.treeViewMain.HideSelection = false;
+ this.treeViewMain.ImageList = this.imageList;
+ this.treeViewMain.LabelEdit = true;
+ this.treeViewMain.LineColor = System.Drawing.Color.DarkGray;
+ this.treeViewMain.Name = "treeViewMain";
+ this.treeViewMain.PathSeparator = "/";
+ this.tableLayoutPanel1.SetRowSpan(this.treeViewMain, 2);
+ this.treeViewMain.BeforeLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.treeViewMain_BeforeLabelEdit);
+ this.treeViewMain.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeViewMain_ItemDrag);
+ this.treeViewMain.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewMain_AfterSelect);
+ this.treeViewMain.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeViewMain_NodeMouseClick);
+ this.treeViewMain.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeViewMain_DragDrop);
+ this.treeViewMain.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeViewMain_DragEnter);
+ this.treeViewMain.DragOver += new System.Windows.Forms.DragEventHandler(this.treeViewMain_DragOver);
+ this.treeViewMain.DoubleClick += new System.EventHandler(this.treeViewMain_DoubleClick);
+ this.treeViewMain.KeyDown += new System.Windows.Forms.KeyEventHandler(this.treeViewMain_KeyDown);
//
- // PckEditor
+ // PckAssetBrowserEditor
//
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18)))));
resources.ApplyResources(this, "$this");
- this.Controls.Add(this.previewPictureBox);
- this.Controls.Add(this.LittleEndianCheckBox);
this.Controls.Add(this.pckFileLabel);
- this.Controls.Add(this.labelImageSize);
this.Controls.Add(this.fileEntryCountLabel);
- this.Controls.Add(this.PropertiesTabControl);
this.Controls.Add(this.label11);
- this.Controls.Add(this.treeViewMain);
this.Controls.Add(logoPictureBox);
+ this.Controls.Add(this.tableLayoutPanel1);
this.ForeColor = System.Drawing.Color.Transparent;
- this.Name = "PckEditor";
+ this.Name = "PckAssetBrowserEditor";
this.Load += new System.EventHandler(this.PckEditor_Load);
((System.ComponentModel.ISupportInitialize)(logoPictureBox)).EndInit();
- this.PropertiesTabControl.ResumeLayout(false);
- this.MetaTab.ResumeLayout(false);
- this.MetaTab.PerformLayout();
- this.contextMenuMetaTree.ResumeLayout(false);
this.contextMenuPCKEntries.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.previewPictureBox)).EndInit();
+ this.tableLayoutPanel1.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
@@ -748,14 +588,8 @@ namespace PckStudio.Controls
#endregion
private MetroFramework.Controls.MetroLabel pckFileLabel;
- private MetroFramework.Controls.MetroLabel labelImageSize;
private MetroFramework.Controls.MetroLabel fileEntryCountLabel;
- private MetroFramework.Controls.MetroTabControl PropertiesTabControl;
- private MetroFramework.Controls.MetroTabPage MetaTab;
- private System.Windows.Forms.TreeView treeMeta;
private MetroFramework.Controls.MetroLabel label11;
- private System.Windows.Forms.TreeView treeViewMain;
- private PckStudio.ToolboxItems.InterpolationPictureBox previewPictureBox;
private System.Windows.Forms.ContextMenuStrip contextMenuMetaTree;
private System.Windows.Forms.ToolStripMenuItem addEntryToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem addEntryToolStripMenuItem1;
@@ -806,11 +640,7 @@ namespace PckStudio.Controls
private System.Windows.Forms.ImageList imageList;
private System.Windows.Forms.ToolStripMenuItem addMultipleEntriesToolStripMenuItem1;
private MetroFramework.Controls.MetroLabel metroLabel2;
- private MetroFramework.Controls.MetroTextBox entryTypeTextBox;
- private MetroFramework.Controls.MetroTextBox entryDataTextBox;
- private MetroFramework.Controls.MetroButton buttonEdit;
private MetroFramework.Controls.MetroLabel metroLabel1;
- private MetroFramework.Controls.MetroCheckBox LittleEndianCheckBox;
private System.Windows.Forms.ToolStripMenuItem setSubPCKEndiannessToolStripMenuItem;
private ToolStripMenuItem bigEndianXbox360PS3WiiUToolStripMenuItem;
private ToolStripMenuItem littleEndianPS4PSVitaSwitchToolStripMenuItem;
@@ -820,5 +650,7 @@ namespace PckStudio.Controls
private ToolStripMenuItem version3114ToolStripMenuItem;
private ToolStripSeparator toolStripSeparator5;
private ToolStripSeparator toolStripSeparator6;
+ private TableLayoutPanel tableLayoutPanel1;
+ private TreeView treeViewMain;
}
}
diff --git a/PCK-Studio/Controls/PckAssetBrowserEditor.cs b/PCK-Studio/Controls/PckAssetBrowserEditor.cs
index 41a6e1fe..a754f9c7 100644
--- a/PCK-Studio/Controls/PckAssetBrowserEditor.cs
+++ b/PCK-Studio/Controls/PckAssetBrowserEditor.cs
@@ -74,9 +74,15 @@ namespace PckStudio.Controls
private delegate void OnModifiedChangeDelegate(bool state);
private OnModifiedChangeDelegate _onModifiedChangeDelegate;
+ private ViewPanel _currentViewPanel;
+
+ private readonly ViewPanel _default;
+ private readonly ViewPanel _models;
+
private int _timesSaved = 0;
- private readonly Dictionary> _pckAssetTypeHandler;
+ private readonly IDictionary> _pckAssetTypeHandler;
+ //private readonly IDictionary _viewPanels;
public PckAssetBrowserEditor(PackInfo packInfo, ISaveContext saveContext)
: base(packInfo, saveContext)
@@ -86,9 +92,20 @@ namespace PckStudio.Controls
_originalEndianness = packInfo.ByteOrder;
_currentEndianness = packInfo.ByteOrder;
- LittleEndianCheckBox.Visible = packInfo.AllowByteOrderSwap;
+ //! InitializeViewPanels
+ {
+ _default = new DefaultPanel();
+ _models = new ModelsPanel(TryGet.FromDelegate((string path, out Image img) =>
+ {
+ bool found = EditorValue.File.TryGetAsset(path + ".png", PckAssetType.TextureFile, out PckAsset asset) ||
+ EditorValue.File.TryGetAsset(path + ".tga", PckAssetType.TextureFile, out asset);
+ img = found ? asset.GetTexture() : default;
+ return found;
+ }));
+ }
treeViewMain.TreeViewNodeSorter = new PckNodeSorter();
+ LoadViewPanel(_default);
skinToolStripMenuItem1.Click += (sender, e) => SetFileType(PckAssetType.SkinFile);
capeToolStripMenuItem.Click += (sender, e) => SetFileType(PckAssetType.CapeFile);
@@ -140,7 +157,20 @@ namespace PckStudio.Controls
[PckAssetType.MaterialFile] = HandleMaterialFile,
};
}
-
+
+ private void LoadViewPanel(ViewPanel viewPanel)
+ {
+ _currentViewPanel?.Reset();
+ if (viewPanel == _currentViewPanel)
+ return;
+ if (_currentViewPanel is not null)
+ tableLayoutPanel1.Controls.Remove(_currentViewPanel);
+ viewPanel.Dock = DockStyle.Fill;
+ tableLayoutPanel1.SetRowSpan(viewPanel, 2);
+ tableLayoutPanel1.Controls.Add(viewPanel, 1, 0);
+ _currentViewPanel = viewPanel;
+ }
+
public new void Save()
{
base.Save();
@@ -216,6 +246,7 @@ namespace PckStudio.Controls
Trace.TraceInformation($"[{nameof(PckAssetBrowserEditor)}:{nameof(HandleTextureFile)}] '{asset.Filename}' size is 0.");
return;
}
+ _currentViewPanel.LoadAsset(asset, () => _wasModified = true);
ResourceLocation resourceLocation = ResourceLocations.GetFromPath(asset.Filename);
Debug.WriteLine("Handling Resource file: " + resourceLocation?.ToString());
@@ -495,9 +526,8 @@ namespace PckStudio.Controls
using CustomSkinEditor skinEditor = new CustomSkinEditor(skin, cape, saveContext, EditorValue.File.HasVerionString);
if (skinEditor.ShowDialog() == DialogResult.OK)
{
- entryDataTextBox.Text = entryTypeTextBox.Text = string.Empty;
_wasModified = true;
- ReloadMetaTreeView();
+ _currentViewPanel.LoadAsset(asset, () => _wasModified = true);
}
}
@@ -593,8 +623,7 @@ namespace PckStudio.Controls
{
// In case the Rename function was just used and the selected node name no longer matches the file name
string selectedNodeText = treeViewMain.SelectedNode is TreeNode node ? node.FullPath : string.Empty;
- previewPictureBox.Image = Resources.NoImageFound;
- treeMeta.Nodes.Clear();
+ _currentViewPanel.Reset();
treeViewMain.Nodes.Clear();
BuildPckTreeView(treeViewMain.Nodes, EditorValue.File);
treeViewMain.Sort();
@@ -685,19 +714,6 @@ namespace PckStudio.Controls
return false;
}
- private void ReloadMetaTreeView()
- {
- treeMeta.Nodes.Clear();
- if (treeViewMain.SelectedNode is TreeNode node &&
- node.Tag is PckAsset asset)
- {
- foreach (KeyValuePair property in asset.GetProperties())
- {
- treeMeta.Nodes.Add(CreateNode(property.Key, property));
- }
- }
- }
-
private void UpdateRichPresence()
{
if (EditorValue is not null &&
@@ -712,10 +728,10 @@ namespace PckStudio.Controls
RPC.SetPresence("An Open Source .PCK File Editor");
}
- private static PckAsset CreateNewAudioAsset(bool isLittle, PckAudioFile audioFile)
+ private static PckAsset CreateNewAudioAsset(OMI.ByteOrder byteOrder, PckAudioFile audioFile)
{
PckAsset newAsset = new PckAsset("audio.pck", PckAssetType.AudioFile);
- newAsset.SetData(new PckAudioFileWriter(audioFile, isLittle ? OMI.ByteOrder.LittleEndian : OMI.ByteOrder.BigEndian));
+ newAsset.SetData(new PckAudioFileWriter(audioFile, byteOrder));
return newAsset;
}
@@ -846,10 +862,6 @@ namespace PckStudio.Controls
folderNamePrompt.OKButtonText = "Add";
if (folderNamePrompt.ShowDialog(this) == DialogResult.OK)
{
- TreeNode folerNode = CreateNode(folderNamePrompt.NewText);
- folerNode.ImageIndex = 0;
- folerNode.SelectedImageIndex = 0;
-
TreeNodeCollection nodeCollection = treeViewMain.Nodes;
if (treeViewMain.SelectedNode is TreeNode node)
{
@@ -865,7 +877,9 @@ namespace PckStudio.Controls
else
nodeCollection = node.Nodes;
}
- nodeCollection.Add(folerNode);
+ TreeNode folerNode = nodeCollection.CreateNode(folderNamePrompt.NewText);
+ folerNode.ImageIndex = 0;
+ folerNode.SelectedImageIndex = 0;
}
}
@@ -883,86 +897,29 @@ namespace PckStudio.Controls
private void treeViewMain_AfterSelect(object sender, TreeViewEventArgs e)
{
- ReloadMetaTreeView();
-
- entryTypeTextBox.Text = entryDataTextBox.Text = labelImageSize.Text = string.Empty;
- buttonEdit.Visible = false;
-
- previewPictureBox.Image = Resources.NoImageFound;
- viewFileInfoToolStripMenuItem.Visible = false;
+ _currentViewPanel.Reset();
if (!e.Node.TryGetTagData(out PckAsset asset))
{
return;
}
+ SetViewPanelFor(asset.Type);
+ _currentViewPanel.LoadAsset(asset, () => _wasModified = true);
+
viewFileInfoToolStripMenuItem.Visible = true;
- if (asset.HasProperty("BOX"))
+ }
+
+ private void SetViewPanelFor(PckAssetType type) => LoadViewPanel(GetViewPanel(type));
+
+ private ViewPanel GetViewPanel(PckAssetType type)
+ {
+ switch (type)
{
- buttonEdit.Text = "EDIT BOXES";
- buttonEdit.Visible = true;
- }
- else if (asset.HasProperty("ANIM") &&
- asset.GetProperty("ANIM", s => SkinANIM.FromString(s) == (SkinAnimMask.RESOLUTION_64x64 | SkinAnimMask.SLIM_MODEL)))
- {
- buttonEdit.Text = "View Skin";
- buttonEdit.Visible = true;
- }
-
- switch (asset.Type)
- {
- case PckAssetType.SkinFile:
- case PckAssetType.CapeFile:
- case PckAssetType.TextureFile:
- {
- Image img = asset.GetTexture();
-
- previewPictureBox.Image = img;
- labelImageSize.Text = $"{previewPictureBox.Image.Size.Width}x{previewPictureBox.Image.Size.Height}";
-
- if (asset.Type != PckAssetType.TextureFile)
- break;
-
- ResourceLocation resourceLocation = ResourceLocations.GetFromPath(asset.Filename);
- if (resourceLocation is null || resourceLocation.Category == ResourceCategory.Unknown)
- break;
-
- if (resourceLocation.Category == ResourceCategory.ItemAnimation ||
- resourceLocation.Category == ResourceCategory.BlockAnimation &&
- !asset.IsMipmappedFile())
- {
- buttonEdit.Text = "EDIT TILE ANIMATION";
- buttonEdit.Visible = true;
- break;
- }
-
- buttonEdit.Text = "EDIT TEXTURE ATLAS";
- buttonEdit.Visible = true;
- }
- break;
-
- case PckAssetType.LocalisationFile:
- buttonEdit.Text = "EDIT LOC";
- buttonEdit.Visible = true;
- break;
-
- case PckAssetType.AudioFile:
- buttonEdit.Text = "EDIT MUSIC CUES";
- buttonEdit.Visible = true;
- break;
-
- case PckAssetType.ColourTableFile when asset.Filename == "colours.col":
- buttonEdit.Text = "EDIT COLORS";
- buttonEdit.Visible = true;
- break;
-
- case PckAssetType.BehavioursFile when asset.Filename == "behaviours.bin":
- buttonEdit.Text = "EDIT BEHAVIOURS";
- buttonEdit.Visible = true;
- break;
+ case PckAssetType.ModelsFile:
+ return _models;
default:
- buttonEdit.Visible = false;
- break;
+ return _default;
}
}
@@ -1281,7 +1238,7 @@ namespace PckStudio.Controls
PckAsset asset = EditorValue.File.CreateNewAsset(animationFilepath, PckAssetType.TextureFile);
asset.SetSerializedData(newAnimation, AnimationSerializer.DefaultSerializer);
BuildMainTreeView();
- ReloadMetaTreeView();
+ _currentViewPanel.LoadAsset(asset, () => _wasModified = true);
}
}
@@ -1301,11 +1258,11 @@ namespace PckStudio.Controls
}
PckAudioFile newAudioFile = CreateNewAudioFile();
- PckAsset newAudioAsset = CreateNewAudioAsset(LittleEndianCheckBox.Checked, newAudioFile);
+ PckAsset newAudioAsset = CreateNewAudioAsset(_currentEndianness, newAudioFile);
ISaveContext saveContext = new DelegatedSaveContext(Settings.Default.AutoSaveChanges, (audioFile) =>
{
- newAudioAsset.SetData(new PckAudioFileWriter(audioFile, LittleEndianCheckBox.Checked ? OMI.ByteOrder.LittleEndian : OMI.ByteOrder.BigEndian));
+ newAudioAsset.SetData(new PckAudioFileWriter(audioFile, _currentEndianness));
});
AudioEditor diag = new AudioEditor(newAudioFile, saveContext);
@@ -1337,8 +1294,7 @@ namespace PckStudio.Controls
return;
}
- EditorValue.File.CreateNewAsset("Skins.pck", PckAssetType.SkinDataFile, new PckFileWriter(new PckFile(3, true),
- LittleEndianCheckBox.Checked ? OMI.ByteOrder.LittleEndian : OMI.ByteOrder.BigEndian));
+ EditorValue.File.CreateNewAsset("Skins.pck", PckAssetType.SkinDataFile, new PckFileWriter(new PckFile(3, true), _currentEndianness));
BuildMainTreeView();
}
@@ -1511,10 +1467,10 @@ namespace PckStudio.Controls
if (treeViewMain.SelectedNode.Tag is PckAsset asset)
{
MessageBox.Show(
- $"Asset path: {asset.Filename}" +
- $"\nAsset type: {(int)asset.Type} ({asset.Type})" +
- $"\nAsset size: {asset.Size}" +
- $"\nProperties count: {asset.PropertyCount}"
+ $"Asset path: {asset.Filename}\n" +
+ $"Asset type: {(int)asset.Type} ({asset.Type})\n" +
+ $"Asset size: {asset.Size}\n" +
+ $"Properties count: {asset.PropertyCount}"
, Path.GetFileName(asset.Filename) + " Asset info");
}
}
@@ -1529,7 +1485,7 @@ namespace PckStudio.Controls
if (p.Key == "BOX" || p.Key == "OFFSET")
asset.SetProperty(asset.GetPropertyIndex(p), new KeyValuePair(p.Key, p.Value.Replace(',', '.')));
}
- ReloadMetaTreeView();
+ _currentViewPanel.LoadAsset(asset, () => _wasModified = true);
_wasModified = true;
}
}
@@ -1779,6 +1735,7 @@ namespace PckStudio.Controls
{
if (!BeforeFileRemove(asset) && EditorValue.File.RemoveAsset(asset))
{
+ _currentViewPanel.Reset();
node.Remove();
_wasModified = true;
}
@@ -1793,15 +1750,6 @@ namespace PckStudio.Controls
}
}
- private void treeMeta_AfterSelect(object sender, TreeViewEventArgs e)
- {
- if (e.Node is TreeNode t && t.Tag is KeyValuePair property)
- {
- entryTypeTextBox.Text = property.Key;
- entryDataTextBox.Text = property.Value;
- }
- }
-
private void treeViewMain_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
@@ -1823,167 +1771,6 @@ namespace PckStudio.Controls
e.CancelEdit = true;
}
- private void editAllEntriesToolStripMenuItem_Click(object sender, EventArgs e)
- {
- if (treeViewMain.SelectedNode.TryGetTagData(out PckAsset asset))
- {
- IEnumerable props = asset.SerializeProperties(seperater: " ");
- using (var input = new MultiTextPrompt(props))
- {
- if (input.ShowDialog(this) == DialogResult.OK)
- {
- asset.ClearProperties();
- asset.DeserializeProperties(input.TextOutput);
- ReloadMetaTreeView();
- _wasModified = true;
- }
- }
- }
- }
-
- private void treeMeta_DoubleClick(object sender, EventArgs e)
- {
- if (treeMeta.SelectedNode is TreeNode subnode && subnode.Tag is KeyValuePair property &&
- treeViewMain.SelectedNode is TreeNode node && node.Tag is PckAsset asset)
- {
- if (asset.HasProperty(property.Key))
- {
- switch (property.Key)
- {
- case "ANIM" when asset.Type == PckAssetType.SkinFile:
- try
- {
- using ANIMEditor diag = new ANIMEditor(SkinANIM.FromString(property.Value));
- if (diag.ShowDialog(this) == DialogResult.OK)
- {
- asset.SetProperty(asset.GetPropertyIndex(property), new KeyValuePair("ANIM", diag.ResultAnim.ToString()));
- ReloadMetaTreeView();
- _wasModified = true;
- }
- return;
- }
- catch (Exception ex)
- {
- Debug.WriteLine(ex.Message);
- Trace.WriteLine("Invalid ANIM value: " + property.Value);
- MessageBox.Show(this, "Failed to parse ANIM value, aborting to normal functionality. Please make sure the value only includes hexadecimal characters (0-9,A-F) and has no more than 8 characters.");
- }
- break;
-
- case "BOX" when asset.Type == PckAssetType.SkinFile:
- try
- {
- using BoxEditor diag = new BoxEditor(property.Value, false);
- if (diag.ShowDialog(this) == DialogResult.OK)
- {
- asset.SetProperty(asset.GetPropertyIndex(property), new KeyValuePair("BOX", diag.Result.ToString()));
- ReloadMetaTreeView();
- _wasModified = true;
- }
- return;
- }
- catch (Exception ex)
- {
- Debug.WriteLine(ex.Message);
- Trace.WriteLine("Invalid BOX value: " + property.Value);
- MessageBox.Show(this, "Failed to parse BOX value, aborting to normal functionality.");
- }
- break;
-
- default:
- break;
-
- }
-
- using (AddPropertyPrompt addProperty = new AddPropertyPrompt(property))
- {
- if (addProperty.ShowDialog(this) == DialogResult.OK)
- {
- asset.SetProperty(asset.GetPropertyIndex(property), addProperty.Property);
- ReloadMetaTreeView();
- _wasModified = true;
- }
- }
- }
- }
- }
-
- private void treeMeta_KeyDown(object sender, KeyEventArgs e)
- {
- if (e.KeyData == Keys.Delete)
- deleteEntryToolStripMenuItem_Click(sender, e);
- }
-
- private void addMultipleEntriesToolStripMenuItem1_Click(object sender, EventArgs e)
- {
- if (treeViewMain.SelectedNode.TryGetTagData(out PckAsset asset))
- {
- using var input = new MultiTextPrompt();
- if (input.ShowDialog(this) == DialogResult.OK)
- {
- asset.DeserializeProperties(input.TextOutput);
- ReloadMetaTreeView();
- _wasModified = true;
- }
- }
- }
-
- private void addBOXEntryToolStripMenuItem1_Click(object sender, EventArgs e)
- {
- if (treeViewMain.SelectedNode is TreeNode t && t.Tag is PckAsset asset)
- {
- using BoxEditor diag = new BoxEditor(SkinBOX.DefaultHead, false);
- if (diag.ShowDialog(this) == DialogResult.OK)
- {
- asset.AddProperty("BOX", diag.Result);
- ReloadMetaTreeView();
- _wasModified = true;
- }
- return;
- }
- }
-
- private void addANIMEntryToolStripMenuItem1_Click(object sender, EventArgs e)
- {
- if (treeViewMain.SelectedNode.TryGetTagData(out PckAsset asset))
- {
- using ANIMEditor diag = new ANIMEditor(SkinANIM.Empty);
- if (diag.ShowDialog(this) == DialogResult.OK)
- {
- asset.AddProperty("ANIM", diag.ResultAnim);
- ReloadMetaTreeView();
- _wasModified = true;
- }
- return;
- }
- }
-
- private void deleteEntryToolStripMenuItem_Click(object sender, EventArgs e)
- {
- if (treeMeta.SelectedNode is TreeNode t && t.Tag is KeyValuePair property &&
- treeViewMain.SelectedNode is TreeNode main && main.Tag is PckAsset asset &&
- asset.RemoveProperty(property))
- {
- treeMeta.SelectedNode.Remove();
- _wasModified = true;
- }
- }
-
- private void addEntryToolStripMenuItem_Click(object sender, EventArgs e)
- {
- if (treeViewMain.SelectedNode is TreeNode t &&
- t.Tag is PckAsset asset)
- {
- using AddPropertyPrompt addProperty = new AddPropertyPrompt();
- if (addProperty.ShowDialog(this) == DialogResult.OK)
- {
- asset.AddProperty(addProperty.Property);
- ReloadMetaTreeView();
- _wasModified = true;
- }
- }
- }
-
private static bool TryGetDefaultEntityModel(string modelName, out Model model)
{
if (!GameModelImporter.DefaultModels.TryGetValue(modelName, out DefaultModel defaultModel) || defaultModel is null)
@@ -2065,16 +1852,6 @@ namespace PckStudio.Controls
UpdateRichPresence();
}
- private void SetEndianess(OMI.ByteOrder endianness)
- {
- LittleEndianCheckBox.Checked = endianness == OMI.ByteOrder.LittleEndian;
- }
-
- private OMI.ByteOrder GetEndianess()
- {
- return LittleEndianCheckBox.Checked ? OMI.ByteOrder.LittleEndian : OMI.ByteOrder.BigEndian;
- }
-
private void buttonEdit_Click(object sender, EventArgs e)
{
treeViewMain_DoubleClick(sender, e);
diff --git a/PCK-Studio/Controls/PckAssetBrowserEditor.resx b/PCK-Studio/Controls/PckAssetBrowserEditor.resx
index 5e94f7c7..5e05c377 100644
--- a/PCK-Studio/Controls/PckAssetBrowserEditor.resx
+++ b/PCK-Studio/Controls/PckAssetBrowserEditor.resx
@@ -807,7 +807,7 @@
$this
- 10
+ 5
8, 27
@@ -828,37 +828,7 @@
$this
- 4
-
-
- Top, Right
-
-
- True
-
-
- 1369, 252
-
-
- 30, 19
-
-
- 19
-
-
- aaa
-
-
- labelImageSize
-
-
- MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- $this
-
-
- 5
+ 2
Top, Right
@@ -885,7 +855,7 @@
$this
- 6
+ 3
Bottom, Right
@@ -894,7 +864,7 @@
True
- 204, 144
+ -303, 102
0, 0
@@ -908,132 +878,6 @@
MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
- MetaTab
-
-
- 2
-
-
- Bottom, Right
-
-
-
-
-
- NoControl
-
-
- 128, 2
-
-
- 15, 15
-
-
- 1
-
-
- False
-
-
- False
-
-
- 215, 114
-
-
- 146, 20
-
-
- 21
-
-
- entryTypeTextBox
-
-
- MetroFramework.Controls.MetroTextBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- MetaTab
-
-
- 3
-
-
- Bottom, Right
-
-
-
-
-
- NoControl
-
-
- 128, 2
-
-
- 15, 15
-
-
- 1
-
-
- False
-
-
- False
-
-
- 215, 146
-
-
- 146, 20
-
-
- 16
-
-
- entryDataTextBox
-
-
- MetroFramework.Controls.MetroTextBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- MetaTab
-
-
- 4
-
-
- Bottom, Right
-
-
- 215, 172
-
-
- 146, 33
-
-
- 20
-
-
- buttonEdit
-
-
- False
-
-
- buttonEdit
-
-
- MetroFramework.Controls.MetroButton, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- MetaTab
-
-
- 5
-
Bottom, Right
@@ -1041,7 +885,7 @@
True
- 266, 37
+ -241, -5
0, 0
@@ -1055,52 +899,32 @@
MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
- MetaTab
-
-
- 6
-
301, 19
-
- 160, 22
+
+ 61, 4
-
- Add Entry
+
+ contextMenuMetaTree
-
- 160, 22
-
-
- Add BOX Entry
-
-
- 160, 22
-
-
- Add ANIM Entry
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABSSURBVDhP5c0x
- DsAgDENRxt7/wmkNSpRGf0CCCZAegxNMM7MlGMp3dIU6dxhKf/QMNxRogeQC8ivw5Vn7C0heJlFA+kL5
- jWAohxRkde4wnGftBS90axNmphIGAAAAAElFTkSuQmCC
-
+
+ System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- 181, 22
+ 32, 19
-
- Add Entry
+
+ 32, 19
+
+
+ 32, 19
+
+
+ 32, 19
- 181, 22
-
-
- Add Multiple Entries
+ 32, 19
181, 22
@@ -1109,94 +933,7 @@
Delete Entry
- 181, 22
-
-
- Edit All Entries
-
-
- 182, 92
-
-
- contextMenuMetaTree
-
-
- System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Left
-
-
- 5, 5
-
-
- 204, 229
-
-
- 0
-
-
- treeMeta
-
-
- System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- MetaTab
-
-
- 7
-
-
- 4, 38
-
-
- 5, 5, 5, 5
-
-
- 724, 239
-
-
- 0
-
-
- Properties
-
-
- MetaTab
-
-
- MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- PropertiesTabControl
-
-
- 0
-
-
- Bottom
-
-
- 279, 270
-
-
- 732, 281
-
-
- 11
-
-
- PropertiesTabControl
-
-
- MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- $this
-
-
- 7
+ 32, 19
True
@@ -1223,7 +960,7 @@
$this
- 8
+ 4
22, 20
@@ -1624,42 +1361,12 @@
System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- Left
-
-
- 0
-
204, 20
32, 32
-
- 5, 50
-
-
- 0
-
-
- 274, 501
-
-
- 20
-
-
- treeViewMain
-
-
- System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 9
-
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
@@ -1674,69 +1381,69 @@
Add Multiple Entries
-
- Top, Right
-
-
- True
-
-
- 831, 0
-
-
- 173, 15
-
-
- 22
-
-
- Save as Switch/Vita/PS4 PCK
-
-
- LittleEndianCheckBox
-
-
- MetroFramework.Controls.MetroCheckBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- $this
-
-
- 3
-
-
- Top, Bottom, Left, Right
-
-
- None
-
-
- NoControl
-
-
- 285, 50
-
-
- 218, 218
-
-
- Zoom
-
-
- 18
-
-
- previewPictureBox
-
-
- PckStudio.ToolboxItems.InterpolationPictureBox, PCK-Studio, Version=7.0.0.2, Culture=neutral, PublicKeyToken=null
-
-
- $this
-
-
+
2
+
+ Fill
+
+
+ 0
+
+
+ 3, 3
+
+
+ 0
+
+
+ 245, 495
+
+
+ 20
+
+
+ treeViewMain
+
+
+ System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 0
+
+
+ Fill
+
+
+ 5, 50
+
+
+ 2
+
+
+ 1006, 501
+
+
+ 23
+
+
+ tableLayoutPanel1
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 6
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="treeViewMain" Row="0" RowSpan="2" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,25,Percent,75" /><Rows Styles="Percent,50,Percent,50" /></TableLayoutSettings>
+
True
@@ -2089,9 +1796,9 @@
System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- PckEditor
+ PckAssetBrowserEditor
- PckStudio.Internal.EditorControl`1[[PckStudio.Internal.PackInfo, PCK-Studio, Version=7.0.0.2, Culture=neutral, PublicKeyToken=null]], PCK-Studio, Version=7.0.0.2, Culture=neutral, PublicKeyToken=null
+ PckStudio.Controls.EditorControl`1[[PckStudio.Core.PackInfo, PckStudio.Core, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], PCK-Studio, Version=7.0.0.2, Culture=neutral, PublicKeyToken=null
\ No newline at end of file
diff --git a/PCK-Studio/Controls/ViewPanel.cs b/PCK-Studio/Controls/ViewPanel.cs
new file mode 100644
index 00000000..16336f96
--- /dev/null
+++ b/PCK-Studio/Controls/ViewPanel.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using OMI.Formats.Pck;
+
+namespace PckStudio.Controls
+{
+ public class ViewPanel : UserControl
+ {
+
+ public virtual void LoadAsset(PckAsset asset, Action onChange) => throw new NotImplementedException("Derived class must implement this function.");
+ public virtual void Reset() => throw new NotImplementedException("Derived class must implement this function.");
+ }
+}
diff --git a/PCK-Studio/Forms/Editor/CustomSkinEditor.cs b/PCK-Studio/Forms/Editor/CustomSkinEditor.cs
index a997d98e..3e7eabcd 100644
--- a/PCK-Studio/Forms/Editor/CustomSkinEditor.cs
+++ b/PCK-Studio/Forms/Editor/CustomSkinEditor.cs
@@ -66,7 +66,6 @@ namespace PckStudio.Forms.Editor
base.OnLoad(e);
if (DesignMode)
return;
- renderer3D1.Initialize(_inflateOverlayParts);
renderer3D1.GuideLineColor = Color.LightCoral;
skinNameLabel.Text = EditorValue.MetaData.Name;
if (EditorValue.HasCape)
diff --git a/PCK-Studio/PckStudio.csproj b/PCK-Studio/PckStudio.csproj
index b2331079..1750519e 100644
--- a/PCK-Studio/PckStudio.csproj
+++ b/PCK-Studio/PckStudio.csproj
@@ -136,6 +136,12 @@
+
+ UserControl
+
+
+ DefaultPanel.cs
+
Component
@@ -148,7 +154,16 @@
Form
+
+ UserControl
+
+
+ ModelsPanel.cs
+
+
+ UserControl
+
UserControl
@@ -399,6 +414,12 @@
+
+ DefaultPanel.cs
+
+
+ ModelsPanel.cs
+
PckAssetBrowserEditor.cs