PckStudio - Add ViewPanels

This commit is contained in:
miku-666
2025-11-28 09:08:31 +01:00
parent 0a8fa2c6ad
commit b845b3de1d
12 changed files with 1360 additions and 874 deletions

View File

@@ -0,0 +1,339 @@
namespace PckStudio.Controls
{
partial class DefaultPanel
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(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;
}
}

View File

@@ -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<string, string> 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<string> 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<string, string> 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<string, string> 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<string, string>("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<string, string>("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();
}
}
}

View File

@@ -0,0 +1,132 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="contextMenuMetaTree.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="addEntryToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABSSURBVDhP5c0x
DsAgDENRxt7/wmkNSpRGf0CCCZAegxNMM7MlGMp3dIU6dxhKf/QMNxRogeQC8ivw5Vn7C0heJlFA+kL5
jWAohxRkde4wnGftBS90axNmphIGAAAAAElFTkSuQmCC
</value>
</data>
</root>

View File

@@ -0,0 +1,139 @@
namespace PckStudio.Controls
{
partial class ModelsPanel
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.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;
}
}

View File

@@ -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<string, Image> _textures;
private readonly ImageList _imageList = new ImageList()
{
ColorDepth = ColorDepth.Depth32Bit,
ImageSize = new Size(32, 32)
};
private ModelContainer _models;
public ModelsPanel(ITryGet<string, Image> 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<Image>[] textures = GetModelTextures(modelName, _textures).ToArray();
_imageList.Images.Clear();
textureTreeView.Nodes.Clear();
foreach ((int i, NamedData<Image> 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<NamedData<Image>> GetModelTextures(string modelName, ITryGet<string, Image> 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<Image>(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;
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -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;
}
}

View File

@@ -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<PckAssetType, Action<PckAsset>> _pckAssetTypeHandler;
private readonly IDictionary<PckAssetType, Action<PckAsset>> _pckAssetTypeHandler;
//private readonly IDictionary<PckAssetType, ViewPanel> _viewPanels;
public PckAssetBrowserEditor(PackInfo packInfo, ISaveContext<PackInfo> 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<string, Image>.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<string, string> 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<PckAudioFile> saveContext = new DelegatedSaveContext<PckAudioFile>(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<string, string>(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<string, string> 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<string> 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<string, string> 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<string, string>("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<string, string>("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<string, string> 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);

View File

@@ -807,7 +807,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;logoPictureBox.ZOrder" xml:space="preserve">
<value>10</value>
<value>5</value>
</data>
<data name="pckFileLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 27</value>
@@ -828,37 +828,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;pckFileLabel.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="labelImageSize.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="labelImageSize.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelImageSize.Location" type="System.Drawing.Point, System.Drawing">
<value>1369, 252</value>
</data>
<data name="labelImageSize.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 19</value>
</data>
<data name="labelImageSize.TabIndex" type="System.Int32, mscorlib">
<value>19</value>
</data>
<data name="labelImageSize.Text" xml:space="preserve">
<value>aaa</value>
</data>
<data name="&gt;&gt;labelImageSize.Name" xml:space="preserve">
<value>labelImageSize</value>
</data>
<data name="&gt;&gt;labelImageSize.Type" xml:space="preserve">
<value>MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
</data>
<data name="&gt;&gt;labelImageSize.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;labelImageSize.ZOrder" xml:space="preserve">
<value>5</value>
<value>2</value>
</data>
<data name="fileEntryCountLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -885,7 +855,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;fileEntryCountLabel.ZOrder" xml:space="preserve">
<value>6</value>
<value>3</value>
</data>
<data name="metroLabel2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
@@ -894,7 +864,7 @@
<value>True</value>
</data>
<data name="metroLabel2.Location" type="System.Drawing.Point, System.Drawing">
<value>204, 144</value>
<value>-303, 102</value>
</data>
<data name="metroLabel2.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 0</value>
@@ -908,132 +878,6 @@
<data name="&gt;&gt;metroLabel2.Type" xml:space="preserve">
<value>MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
</data>
<data name="&gt;&gt;metroLabel2.Parent" xml:space="preserve">
<value>MetaTab</value>
</data>
<data name="&gt;&gt;metroLabel2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="entryTypeTextBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="resource.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<data name="resource.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="resource.Location" type="System.Drawing.Point, System.Drawing">
<value>128, 2</value>
</data>
<data name="resource.Size" type="System.Drawing.Size, System.Drawing">
<value>15, 15</value>
</data>
<data name="resource.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="resource.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="entryTypeTextBox.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="entryTypeTextBox.Location" type="System.Drawing.Point, System.Drawing">
<value>215, 114</value>
</data>
<data name="entryTypeTextBox.Size" type="System.Drawing.Size, System.Drawing">
<value>146, 20</value>
</data>
<data name="entryTypeTextBox.TabIndex" type="System.Int32, mscorlib">
<value>21</value>
</data>
<data name="&gt;&gt;entryTypeTextBox.Name" xml:space="preserve">
<value>entryTypeTextBox</value>
</data>
<data name="&gt;&gt;entryTypeTextBox.Type" xml:space="preserve">
<value>MetroFramework.Controls.MetroTextBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
</data>
<data name="&gt;&gt;entryTypeTextBox.Parent" xml:space="preserve">
<value>MetaTab</value>
</data>
<data name="&gt;&gt;entryTypeTextBox.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="entryDataTextBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="resource.Image1" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<data name="resource.ImeMode1" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="resource.Location1" type="System.Drawing.Point, System.Drawing">
<value>128, 2</value>
</data>
<data name="resource.Size1" type="System.Drawing.Size, System.Drawing">
<value>15, 15</value>
</data>
<data name="resource.TabIndex1" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="resource.Visible1" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="entryDataTextBox.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="entryDataTextBox.Location" type="System.Drawing.Point, System.Drawing">
<value>215, 146</value>
</data>
<data name="entryDataTextBox.Size" type="System.Drawing.Size, System.Drawing">
<value>146, 20</value>
</data>
<data name="entryDataTextBox.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="&gt;&gt;entryDataTextBox.Name" xml:space="preserve">
<value>entryDataTextBox</value>
</data>
<data name="&gt;&gt;entryDataTextBox.Type" xml:space="preserve">
<value>MetroFramework.Controls.MetroTextBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
</data>
<data name="&gt;&gt;entryDataTextBox.Parent" xml:space="preserve">
<value>MetaTab</value>
</data>
<data name="&gt;&gt;entryDataTextBox.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="buttonEdit.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="buttonEdit.Location" type="System.Drawing.Point, System.Drawing">
<value>215, 172</value>
</data>
<data name="buttonEdit.Size" type="System.Drawing.Size, System.Drawing">
<value>146, 33</value>
</data>
<data name="buttonEdit.TabIndex" type="System.Int32, mscorlib">
<value>20</value>
</data>
<data name="buttonEdit.Text" xml:space="preserve">
<value>buttonEdit</value>
</data>
<data name="buttonEdit.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;buttonEdit.Name" xml:space="preserve">
<value>buttonEdit</value>
</data>
<data name="&gt;&gt;buttonEdit.Type" xml:space="preserve">
<value>MetroFramework.Controls.MetroButton, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
</data>
<data name="&gt;&gt;buttonEdit.Parent" xml:space="preserve">
<value>MetaTab</value>
</data>
<data name="&gt;&gt;buttonEdit.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="metroLabel1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
@@ -1041,7 +885,7 @@
<value>True</value>
</data>
<data name="metroLabel1.Location" type="System.Drawing.Point, System.Drawing">
<value>266, 37</value>
<value>-241, -5</value>
</data>
<data name="metroLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 0</value>
@@ -1055,52 +899,32 @@
<data name="&gt;&gt;metroLabel1.Type" xml:space="preserve">
<value>MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
</data>
<data name="&gt;&gt;metroLabel1.Parent" xml:space="preserve">
<value>MetaTab</value>
</data>
<data name="&gt;&gt;metroLabel1.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<metadata name="contextMenuMetaTree.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>301, 19</value>
</metadata>
<data name="addEntryToolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
<value>160, 22</value>
<data name="contextMenuMetaTree.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 4</value>
</data>
<data name="addEntryToolStripMenuItem1.Text" xml:space="preserve">
<value>Add Entry</value>
<data name="&gt;&gt;contextMenuMetaTree.Name" xml:space="preserve">
<value>contextMenuMetaTree</value>
</data>
<data name="addBOXEntryToolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
<value>160, 22</value>
</data>
<data name="addBOXEntryToolStripMenuItem1.Text" xml:space="preserve">
<value>Add BOX Entry</value>
</data>
<data name="addANIMEntryToolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
<value>160, 22</value>
</data>
<data name="addANIMEntryToolStripMenuItem1.Text" xml:space="preserve">
<value>Add ANIM Entry</value>
</data>
<data name="addEntryToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABSSURBVDhP5c0x
DsAgDENRxt7/wmkNSpRGf0CCCZAegxNMM7MlGMp3dIU6dxhKf/QMNxRogeQC8ivw5Vn7C0heJlFA+kL5
jWAohxRkde4wnGftBS90axNmphIGAAAAAElFTkSuQmCC
</value>
<data name="&gt;&gt;contextMenuMetaTree.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="addEntryToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>181, 22</value>
<value>32, 19</value>
</data>
<data name="addEntryToolStripMenuItem.Text" xml:space="preserve">
<value>Add Entry</value>
<data name="addEntryToolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 19</value>
</data>
<data name="addBOXEntryToolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 19</value>
</data>
<data name="addANIMEntryToolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 19</value>
</data>
<data name="addMultipleEntriesToolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
<value>181, 22</value>
</data>
<data name="addMultipleEntriesToolStripMenuItem1.Text" xml:space="preserve">
<value>Add Multiple Entries</value>
<value>32, 19</value>
</data>
<data name="deleteEntryToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>181, 22</value>
@@ -1109,94 +933,7 @@
<value>Delete Entry</value>
</data>
<data name="editAllEntriesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>181, 22</value>
</data>
<data name="editAllEntriesToolStripMenuItem.Text" xml:space="preserve">
<value>Edit All Entries</value>
</data>
<data name="contextMenuMetaTree.Size" type="System.Drawing.Size, System.Drawing">
<value>182, 92</value>
</data>
<data name="&gt;&gt;contextMenuMetaTree.Name" xml:space="preserve">
<value>contextMenuMetaTree</value>
</data>
<data name="&gt;&gt;contextMenuMetaTree.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="treeMeta.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Left</value>
</data>
<data name="treeMeta.Location" type="System.Drawing.Point, System.Drawing">
<value>5, 5</value>
</data>
<data name="treeMeta.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 229</value>
</data>
<data name="treeMeta.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;treeMeta.Name" xml:space="preserve">
<value>treeMeta</value>
</data>
<data name="&gt;&gt;treeMeta.Type" xml:space="preserve">
<value>System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;treeMeta.Parent" xml:space="preserve">
<value>MetaTab</value>
</data>
<data name="&gt;&gt;treeMeta.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="MetaTab.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 38</value>
</data>
<data name="MetaTab.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 5, 5, 5</value>
</data>
<data name="MetaTab.Size" type="System.Drawing.Size, System.Drawing">
<value>724, 239</value>
</data>
<data name="MetaTab.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="MetaTab.Text" xml:space="preserve">
<value>Properties</value>
</data>
<data name="&gt;&gt;MetaTab.Name" xml:space="preserve">
<value>MetaTab</value>
</data>
<data name="&gt;&gt;MetaTab.Type" xml:space="preserve">
<value>MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
</data>
<data name="&gt;&gt;MetaTab.Parent" xml:space="preserve">
<value>PropertiesTabControl</value>
</data>
<data name="&gt;&gt;MetaTab.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="PropertiesTabControl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="PropertiesTabControl.Location" type="System.Drawing.Point, System.Drawing">
<value>279, 270</value>
</data>
<data name="PropertiesTabControl.Size" type="System.Drawing.Size, System.Drawing">
<value>732, 281</value>
</data>
<data name="PropertiesTabControl.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="&gt;&gt;PropertiesTabControl.Name" xml:space="preserve">
<value>PropertiesTabControl</value>
</data>
<data name="&gt;&gt;PropertiesTabControl.Type" xml:space="preserve">
<value>MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
</data>
<data name="&gt;&gt;PropertiesTabControl.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;PropertiesTabControl.ZOrder" xml:space="preserve">
<value>7</value>
<value>32, 19</value>
</data>
<metadata name="label11.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
@@ -1223,7 +960,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label11.ZOrder" xml:space="preserve">
<value>8</value>
<value>4</value>
</data>
<metadata name="contextMenuPCKEntries.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>22, 20</value>
@@ -1624,42 +1361,12 @@
<data name="&gt;&gt;contextMenuPCKEntries.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="treeViewMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Left</value>
</data>
<data name="treeViewMain.ImageIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>204, 20</value>
</metadata>
<data name="imageList.ImageSize" type="System.Drawing.Size, System.Drawing">
<value>32, 32</value>
</data>
<data name="treeViewMain.Location" type="System.Drawing.Point, System.Drawing">
<value>5, 50</value>
</data>
<data name="treeViewMain.SelectedImageIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="treeViewMain.Size" type="System.Drawing.Size, System.Drawing">
<value>274, 501</value>
</data>
<data name="treeViewMain.TabIndex" type="System.Int32, mscorlib">
<value>20</value>
</data>
<data name="&gt;&gt;treeViewMain.Name" xml:space="preserve">
<value>treeViewMain</value>
</data>
<data name="&gt;&gt;treeViewMain.Type" xml:space="preserve">
<value>System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;treeViewMain.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;treeViewMain.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="addMultipleEntriesToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
@@ -1674,69 +1381,69 @@
<data name="addMultipleEntriesToolStripMenuItem.Text" xml:space="preserve">
<value>Add Multiple Entries</value>
</data>
<data name="LittleEndianCheckBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="LittleEndianCheckBox.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LittleEndianCheckBox.Location" type="System.Drawing.Point, System.Drawing">
<value>831, 0</value>
</data>
<data name="LittleEndianCheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>173, 15</value>
</data>
<data name="LittleEndianCheckBox.TabIndex" type="System.Int32, mscorlib">
<value>22</value>
</data>
<data name="LittleEndianCheckBox.Text" xml:space="preserve">
<value>Save as Switch/Vita/PS4 PCK</value>
</data>
<data name="&gt;&gt;LittleEndianCheckBox.Name" xml:space="preserve">
<value>LittleEndianCheckBox</value>
</data>
<data name="&gt;&gt;LittleEndianCheckBox.Type" xml:space="preserve">
<value>MetroFramework.Controls.MetroCheckBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
</data>
<data name="&gt;&gt;LittleEndianCheckBox.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LittleEndianCheckBox.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="previewPictureBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="previewPictureBox.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
<value>None</value>
</data>
<data name="previewPictureBox.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="previewPictureBox.Location" type="System.Drawing.Point, System.Drawing">
<value>285, 50</value>
</data>
<data name="previewPictureBox.Size" type="System.Drawing.Size, System.Drawing">
<value>218, 218</value>
</data>
<data name="previewPictureBox.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>Zoom</value>
</data>
<data name="previewPictureBox.TabIndex" type="System.Int32, mscorlib">
<value>18</value>
</data>
<data name="&gt;&gt;previewPictureBox.Name" xml:space="preserve">
<value>previewPictureBox</value>
</data>
<data name="&gt;&gt;previewPictureBox.Type" xml:space="preserve">
<value>PckStudio.ToolboxItems.InterpolationPictureBox, PCK-Studio, Version=7.0.0.2, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;previewPictureBox.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;previewPictureBox.ZOrder" xml:space="preserve">
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="treeViewMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="treeViewMain.ImageIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="treeViewMain.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="treeViewMain.SelectedImageIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="treeViewMain.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 495</value>
</data>
<data name="treeViewMain.TabIndex" type="System.Int32, mscorlib">
<value>20</value>
</data>
<data name="&gt;&gt;treeViewMain.Name" xml:space="preserve">
<value>treeViewMain</value>
</data>
<data name="&gt;&gt;treeViewMain.Type" xml:space="preserve">
<value>System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;treeViewMain.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;treeViewMain.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>5, 50</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>1006, 501</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>23</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="treeViewMain" Row="0" RowSpan="2" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,25,Percent,75" /&gt;&lt;Rows Styles="Percent,50,Percent,50" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
@@ -2089,9 +1796,9 @@
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PckEditor</value>
<value>PckAssetBrowserEditor</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>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</value>
<value>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</value>
</data>
</root>

View File

@@ -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.");
}
}

View File

@@ -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)

View File

@@ -136,6 +136,12 @@
<Reference Include="WindowsFormsIntegration" />
</ItemGroup>
<ItemGroup>
<Compile Include="Controls\DefaultPanel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\DefaultPanel.Designer.cs">
<DependentUpon>DefaultPanel.cs</DependentUpon>
</Compile>
<Compile Include="Controls\CustomTabControl.cs">
<SubType>Component</SubType>
</Compile>
@@ -148,7 +154,16 @@
<Compile Include="Controls\ImmersiveForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Controls\ModelsPanel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ModelsPanel.Designer.cs">
<DependentUpon>ModelsPanel.cs</DependentUpon>
</Compile>
<Compile Include="Controls\NamedTextureTreeNode.cs" />
<Compile Include="Controls\ViewPanel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\PageClosingEventArgs.cs" />
<Compile Include="Controls\PckAssetBrowserEditor.cs">
<SubType>UserControl</SubType>
@@ -399,6 +414,12 @@
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Controls\DefaultPanel.resx">
<DependentUpon>DefaultPanel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ModelsPanel.resx">
<DependentUpon>ModelsPanel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\PckAssetBrowserEditor.resx">
<DependentUpon>PckAssetBrowserEditor.cs</DependentUpon>
</EmbeddedResource>