Made AnimationEditor compatible with the new Sprite implementation

This commit is contained in:
quinnvoker
2018-12-19 10:18:42 -08:00
parent b8173d688d
commit 0f7f1b1be4
5 changed files with 187 additions and 272 deletions
+2 -1
View File
@@ -13,6 +13,7 @@ namespace AnimationEditor
{ {
class AnimationPreview : UpdateWindow class AnimationPreview : UpdateWindow
{ {
public Texture2D SpriteSheet { get; set; }
public AnimatedSprite PreviewSprite { get; set; } public AnimatedSprite PreviewSprite { get; set; }
public float ZoomLevel { get; set; } public float ZoomLevel { get; set; }
@@ -89,7 +90,7 @@ namespace AnimationEditor
Editor.spriteBatch.Begin(samplerState: SamplerState.PointClamp, transformMatrix: scaleMatrix); Editor.spriteBatch.Begin(samplerState: SamplerState.PointClamp, transformMatrix: scaleMatrix);
else else
Editor.spriteBatch.Begin(transformMatrix: scaleMatrix); Editor.spriteBatch.Begin(transformMatrix: scaleMatrix);
PreviewSprite?.Draw(Editor.spriteBatch, new Vector2((Editor.graphics.PresentationParameters.BackBufferWidth / 2) / ZoomLevel, (Editor.graphics.PresentationParameters.BackBufferHeight / 2) / ZoomLevel), Color.White); PreviewSprite?.Draw(Editor.spriteBatch, SpriteSheet, new Vector2((Editor.graphics.PresentationParameters.BackBufferWidth / 2) / ZoomLevel, (Editor.graphics.PresentationParameters.BackBufferHeight / 2) / ZoomLevel), Color.White);
Editor.spriteBatch.End(); Editor.spriteBatch.End();
} }
} }
+125 -124
View File
@@ -61,15 +61,15 @@
this.addAnimationButton = new System.Windows.Forms.Button(); this.addAnimationButton = new System.Windows.Forms.Button();
this.removeAnimationButton = new System.Windows.Forms.Button(); this.removeAnimationButton = new System.Windows.Forms.Button();
this.frameEditorPanel = new System.Windows.Forms.Panel(); this.frameEditorPanel = new System.Windows.Forms.Panel();
this.subSpritePanel = new System.Windows.Forms.Panel(); this.frameSpritePanel = new System.Windows.Forms.Panel();
this.subSpritePositionLabel = new System.Windows.Forms.Label(); this.frameSpritePositionLabel = new System.Windows.Forms.Label();
this.subSpriteListBox = new System.Windows.Forms.ListBox(); this.frameSpriteListBox = new System.Windows.Forms.ListBox();
this.subSpriteYPosLabel = new System.Windows.Forms.Label(); this.spriteYPosLabel = new System.Windows.Forms.Label();
this.subSpriteXPosLabel = new System.Windows.Forms.Label(); this.spriteXPosLabel = new System.Windows.Forms.Label();
this.subSpriteListLabel = new System.Windows.Forms.Label(); this.frameSpriteListLabel = new System.Windows.Forms.Label();
this.addSpriteToSubSpritesButton = new System.Windows.Forms.Button(); this.addSpriteToFrameSpritesButton = new System.Windows.Forms.Button();
this.subSpriteYPosBox = new System.Windows.Forms.NumericUpDown(); this.spriteYPosBox = new System.Windows.Forms.NumericUpDown();
this.subSpriteXPosBox = new System.Windows.Forms.NumericUpDown(); this.spriteXPosBox = new System.Windows.Forms.NumericUpDown();
this.importDelayLabel = new System.Windows.Forms.Label(); this.importDelayLabel = new System.Windows.Forms.Label();
this.importValuesLabel = new System.Windows.Forms.Label(); this.importValuesLabel = new System.Windows.Forms.Label();
this.importDelayBox = new System.Windows.Forms.NumericUpDown(); this.importDelayBox = new System.Windows.Forms.NumericUpDown();
@@ -77,20 +77,20 @@
this.frameInfoLabel = new System.Windows.Forms.Label(); this.frameInfoLabel = new System.Windows.Forms.Label();
this.frameBoxLabel = new System.Windows.Forms.Label(); this.frameBoxLabel = new System.Windows.Forms.Label();
this.spriteBoxLabel = new System.Windows.Forms.Label(); this.spriteBoxLabel = new System.Windows.Forms.Label();
this.addEmptyFrameButton = new System.Windows.Forms.Button();
this.animationPanel = new System.Windows.Forms.Panel(); this.animationPanel = new System.Windows.Forms.Panel();
this.animationNameLabel = new System.Windows.Forms.Label(); this.animationNameLabel = new System.Windows.Forms.Label();
this.animationLabel = new System.Windows.Forms.Label(); this.animationLabel = new System.Windows.Forms.Label();
this.loadAnimationSetDialog = new System.Windows.Forms.OpenFileDialog();
this.animationPreview = new AnimationEditor.AnimationPreview(); this.animationPreview = new AnimationEditor.AnimationPreview();
this.addEmptyFrameButton = new System.Windows.Forms.Button(); this.loadAnimationSetDialog = new System.Windows.Forms.OpenFileDialog();
((System.ComponentModel.ISupportInitialize)(this.spritePreview)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.spritePreview)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.frameTrackBar)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.frameTrackBar)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.delayInputBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.delayInputBox)).BeginInit();
this.mainMenuStrip.SuspendLayout(); this.mainMenuStrip.SuspendLayout();
this.frameEditorPanel.SuspendLayout(); this.frameEditorPanel.SuspendLayout();
this.subSpritePanel.SuspendLayout(); this.frameSpritePanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.subSpriteYPosBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.spriteYPosBox)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.subSpriteXPosBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.spriteXPosBox)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.importDelayBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.importDelayBox)).BeginInit();
this.animationPanel.SuspendLayout(); this.animationPanel.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
@@ -390,7 +390,7 @@
// //
this.frameEditorPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.frameEditorPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left))); | System.Windows.Forms.AnchorStyles.Left)));
this.frameEditorPanel.Controls.Add(this.subSpritePanel); this.frameEditorPanel.Controls.Add(this.frameSpritePanel);
this.frameEditorPanel.Controls.Add(this.importDelayLabel); this.frameEditorPanel.Controls.Add(this.importDelayLabel);
this.frameEditorPanel.Controls.Add(this.importValuesLabel); this.frameEditorPanel.Controls.Add(this.importValuesLabel);
this.frameEditorPanel.Controls.Add(this.importDelayBox); this.frameEditorPanel.Controls.Add(this.importDelayBox);
@@ -413,121 +413,121 @@
this.frameEditorPanel.Size = new System.Drawing.Size(290, 467); this.frameEditorPanel.Size = new System.Drawing.Size(290, 467);
this.frameEditorPanel.TabIndex = 19; this.frameEditorPanel.TabIndex = 19;
// //
// subSpritePanel // frameSpritePanel
// //
this.subSpritePanel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.frameSpritePanel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.subSpritePanel.Controls.Add(this.subSpritePositionLabel); this.frameSpritePanel.Controls.Add(this.frameSpritePositionLabel);
this.subSpritePanel.Controls.Add(this.subSpriteListBox); this.frameSpritePanel.Controls.Add(this.frameSpriteListBox);
this.subSpritePanel.Controls.Add(this.subSpriteYPosLabel); this.frameSpritePanel.Controls.Add(this.spriteYPosLabel);
this.subSpritePanel.Controls.Add(this.subSpriteXPosLabel); this.frameSpritePanel.Controls.Add(this.spriteXPosLabel);
this.subSpritePanel.Controls.Add(this.subSpriteListLabel); this.frameSpritePanel.Controls.Add(this.frameSpriteListLabel);
this.subSpritePanel.Controls.Add(this.addSpriteToSubSpritesButton); this.frameSpritePanel.Controls.Add(this.addSpriteToFrameSpritesButton);
this.subSpritePanel.Controls.Add(this.subSpriteYPosBox); this.frameSpritePanel.Controls.Add(this.spriteYPosBox);
this.subSpritePanel.Controls.Add(this.subSpriteXPosBox); this.frameSpritePanel.Controls.Add(this.spriteXPosBox);
this.subSpritePanel.Location = new System.Drawing.Point(128, 342); this.frameSpritePanel.Location = new System.Drawing.Point(128, 342);
this.subSpritePanel.Name = "subSpritePanel"; this.frameSpritePanel.Name = "frameSpritePanel";
this.subSpritePanel.Size = new System.Drawing.Size(161, 124); this.frameSpritePanel.Size = new System.Drawing.Size(161, 124);
this.subSpritePanel.TabIndex = 24; this.frameSpritePanel.TabIndex = 24;
// //
// subSpritePositionLabel // frameSpritePositionLabel
// //
this.subSpritePositionLabel.AutoSize = true; this.frameSpritePositionLabel.AutoSize = true;
this.subSpritePositionLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.frameSpritePositionLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.subSpritePositionLabel.Location = new System.Drawing.Point(34, 75); this.frameSpritePositionLabel.Location = new System.Drawing.Point(34, 75);
this.subSpritePositionLabel.Name = "subSpritePositionLabel"; this.frameSpritePositionLabel.Name = "frameSpritePositionLabel";
this.subSpritePositionLabel.Size = new System.Drawing.Size(112, 13); this.frameSpritePositionLabel.Size = new System.Drawing.Size(86, 13);
this.subSpritePositionLabel.TabIndex = 23; this.frameSpritePositionLabel.TabIndex = 23;
this.subSpritePositionLabel.Text = "Sub-Sprite Positon"; this.frameSpritePositionLabel.Text = "Sprite Positon";
// //
// subSpriteListBox // frameSpriteListBox
// //
this.subSpriteListBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.frameSpriteListBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.subSpriteListBox.FormattingEnabled = true; this.frameSpriteListBox.FormattingEnabled = true;
this.subSpriteListBox.Location = new System.Drawing.Point(35, 16); this.frameSpriteListBox.Location = new System.Drawing.Point(35, 16);
this.subSpriteListBox.Name = "subSpriteListBox"; this.frameSpriteListBox.Name = "frameSpriteListBox";
this.subSpriteListBox.Size = new System.Drawing.Size(120, 56); this.frameSpriteListBox.Size = new System.Drawing.Size(120, 56);
this.subSpriteListBox.TabIndex = 22; this.frameSpriteListBox.TabIndex = 22;
this.subSpriteListBox.SelectedIndexChanged += new System.EventHandler(this.subSpriteListBox_SelectedIndexChanged); this.frameSpriteListBox.SelectedIndexChanged += new System.EventHandler(this.frameSpriteListBox_SelectedIndexChanged);
// //
// subSpriteYPosLabel // spriteYPosLabel
// //
this.subSpriteYPosLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.spriteYPosLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.subSpriteYPosLabel.AutoSize = true; this.spriteYPosLabel.AutoSize = true;
this.subSpriteYPosLabel.Location = new System.Drawing.Point(95, 95); this.spriteYPosLabel.Location = new System.Drawing.Point(95, 95);
this.subSpriteYPosLabel.Name = "subSpriteYPosLabel"; this.spriteYPosLabel.Name = "spriteYPosLabel";
this.subSpriteYPosLabel.Size = new System.Drawing.Size(14, 13); this.spriteYPosLabel.Size = new System.Drawing.Size(14, 13);
this.subSpriteYPosLabel.TabIndex = 18; this.spriteYPosLabel.TabIndex = 18;
this.subSpriteYPosLabel.Text = "Y"; this.spriteYPosLabel.Text = "Y";
// //
// subSpriteXPosLabel // spriteXPosLabel
// //
this.subSpriteXPosLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.spriteXPosLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.subSpriteXPosLabel.AutoSize = true; this.spriteXPosLabel.AutoSize = true;
this.subSpriteXPosLabel.Location = new System.Drawing.Point(34, 95); this.spriteXPosLabel.Location = new System.Drawing.Point(34, 95);
this.subSpriteXPosLabel.Name = "subSpriteXPosLabel"; this.spriteXPosLabel.Name = "spriteXPosLabel";
this.subSpriteXPosLabel.Size = new System.Drawing.Size(14, 13); this.spriteXPosLabel.Size = new System.Drawing.Size(14, 13);
this.subSpriteXPosLabel.TabIndex = 18; this.spriteXPosLabel.TabIndex = 18;
this.subSpriteXPosLabel.Text = "X"; this.spriteXPosLabel.Text = "X";
// //
// subSpriteListLabel // frameSpriteListLabel
// //
this.subSpriteListLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.frameSpriteListLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.subSpriteListLabel.AutoSize = true; this.frameSpriteListLabel.AutoSize = true;
this.subSpriteListLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.frameSpriteListLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.subSpriteListLabel.Location = new System.Drawing.Point(34, 0); this.frameSpriteListLabel.Location = new System.Drawing.Point(34, 0);
this.subSpriteListLabel.Name = "subSpriteListLabel"; this.frameSpriteListLabel.Name = "frameSpriteListLabel";
this.subSpriteListLabel.Size = new System.Drawing.Size(72, 13); this.frameSpriteListLabel.Size = new System.Drawing.Size(98, 13);
this.subSpriteListLabel.TabIndex = 16; this.frameSpriteListLabel.TabIndex = 16;
this.subSpriteListLabel.Text = "Sub-Sprites"; this.frameSpriteListLabel.Text = "Sprites in Frame";
// //
// addSpriteToSubSpritesButton // addSpriteToFrameSpritesButton
// //
this.addSpriteToSubSpritesButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.addSpriteToFrameSpritesButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.addSpriteToSubSpritesButton.Location = new System.Drawing.Point(2, 29); this.addSpriteToFrameSpritesButton.Location = new System.Drawing.Point(2, 29);
this.addSpriteToSubSpritesButton.Name = "addSpriteToSubSpritesButton"; this.addSpriteToFrameSpritesButton.Name = "addSpriteToFrameSpritesButton";
this.addSpriteToSubSpritesButton.Size = new System.Drawing.Size(27, 23); this.addSpriteToFrameSpritesButton.Size = new System.Drawing.Size(27, 23);
this.addSpriteToSubSpritesButton.TabIndex = 5; this.addSpriteToFrameSpritesButton.TabIndex = 5;
this.addSpriteToSubSpritesButton.Text = "→"; this.addSpriteToFrameSpritesButton.Text = "→";
this.addSpriteToSubSpritesButton.UseVisualStyleBackColor = true; this.addSpriteToFrameSpritesButton.UseVisualStyleBackColor = true;
this.addSpriteToSubSpritesButton.Click += new System.EventHandler(this.addSpriteToSubSpritesButton_Click); this.addSpriteToFrameSpritesButton.Click += new System.EventHandler(this.addSpriteToFrameSpritesButton_Click);
// //
// subSpriteYPosBox // spriteYPosBox
// //
this.subSpriteYPosBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.spriteYPosBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.subSpriteYPosBox.Location = new System.Drawing.Point(110, 93); this.spriteYPosBox.Location = new System.Drawing.Point(110, 93);
this.subSpriteYPosBox.Maximum = new decimal(new int[] { this.spriteYPosBox.Maximum = new decimal(new int[] {
2147483647, 2147483647,
0, 0,
0, 0,
0}); 0});
this.subSpriteYPosBox.Minimum = new decimal(new int[] { this.spriteYPosBox.Minimum = new decimal(new int[] {
2147483647, 2147483647,
0, 0,
0, 0,
-2147483648}); -2147483648});
this.subSpriteYPosBox.Name = "subSpriteYPosBox"; this.spriteYPosBox.Name = "spriteYPosBox";
this.subSpriteYPosBox.Size = new System.Drawing.Size(43, 20); this.spriteYPosBox.Size = new System.Drawing.Size(43, 20);
this.subSpriteYPosBox.TabIndex = 8; this.spriteYPosBox.TabIndex = 8;
this.subSpriteYPosBox.ValueChanged += new System.EventHandler(this.subSpriteYPosBox_ValueChanged); this.spriteYPosBox.ValueChanged += new System.EventHandler(this.spriteYPosBox_ValueChanged);
// //
// subSpriteXPosBox // spriteXPosBox
// //
this.subSpriteXPosBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.spriteXPosBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.subSpriteXPosBox.Location = new System.Drawing.Point(49, 93); this.spriteXPosBox.Location = new System.Drawing.Point(49, 93);
this.subSpriteXPosBox.Maximum = new decimal(new int[] { this.spriteXPosBox.Maximum = new decimal(new int[] {
2147483647, 2147483647,
0, 0,
0, 0,
0}); 0});
this.subSpriteXPosBox.Minimum = new decimal(new int[] { this.spriteXPosBox.Minimum = new decimal(new int[] {
2147483647, 2147483647,
0, 0,
0, 0,
-2147483648}); -2147483648});
this.subSpriteXPosBox.Name = "subSpriteXPosBox"; this.spriteXPosBox.Name = "spriteXPosBox";
this.subSpriteXPosBox.Size = new System.Drawing.Size(43, 20); this.spriteXPosBox.Size = new System.Drawing.Size(43, 20);
this.subSpriteXPosBox.TabIndex = 8; this.spriteXPosBox.TabIndex = 8;
this.subSpriteXPosBox.ValueChanged += new System.EventHandler(this.subSpriteXPosBox_ValueChanged); this.spriteXPosBox.ValueChanged += new System.EventHandler(this.spriteXPosBox_ValueChanged);
// //
// importDelayLabel // importDelayLabel
// //
@@ -600,6 +600,16 @@
this.spriteBoxLabel.TabIndex = 15; this.spriteBoxLabel.TabIndex = 15;
this.spriteBoxLabel.Text = "Sprite Selection"; this.spriteBoxLabel.Text = "Sprite Selection";
// //
// addEmptyFrameButton
//
this.addEmptyFrameButton.Location = new System.Drawing.Point(163, 19);
this.addEmptyFrameButton.Name = "addEmptyFrameButton";
this.addEmptyFrameButton.Size = new System.Drawing.Size(27, 23);
this.addEmptyFrameButton.TabIndex = 12;
this.addEmptyFrameButton.Text = "+";
this.addEmptyFrameButton.UseVisualStyleBackColor = true;
this.addEmptyFrameButton.Click += new System.EventHandler(this.addEmptyFrameButton_Click);
//
// animationPanel // animationPanel
// //
this.animationPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.animationPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@@ -640,12 +650,6 @@
this.animationLabel.TabIndex = 22; this.animationLabel.TabIndex = 22;
this.animationLabel.Text = "Animation"; this.animationLabel.Text = "Animation";
// //
// loadAnimationSetDialog
//
this.loadAnimationSetDialog.DefaultExt = "animset";
this.loadAnimationSetDialog.FileName = "openFileDialog1";
this.loadAnimationSetDialog.Filter = "QUROGames AnimationSet|*.animSet";
//
// animationPreview // animationPreview
// //
this.animationPreview.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.animationPreview.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@@ -657,20 +661,17 @@
this.animationPreview.Playing = false; this.animationPreview.Playing = false;
this.animationPreview.PreviewSprite = null; this.animationPreview.PreviewSprite = null;
this.animationPreview.Size = new System.Drawing.Size(467, 370); this.animationPreview.Size = new System.Drawing.Size(467, 370);
this.animationPreview.SpriteSheet = null;
this.animationPreview.TabIndex = 0; this.animationPreview.TabIndex = 0;
this.animationPreview.Text = "animationPreview1"; this.animationPreview.Text = "animationPreview1";
this.animationPreview.ZoomLevel = 0F; this.animationPreview.ZoomLevel = 0F;
this.animationPreview.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.animationPreview_MouseWheel); this.animationPreview.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.animationPreview_MouseWheel);
// //
// addEmptyFrameButton // loadAnimationSetDialog
// //
this.addEmptyFrameButton.Location = new System.Drawing.Point(163, 19); this.loadAnimationSetDialog.DefaultExt = "animset";
this.addEmptyFrameButton.Name = "addEmptyFrameButton"; this.loadAnimationSetDialog.FileName = "openFileDialog1";
this.addEmptyFrameButton.Size = new System.Drawing.Size(27, 23); this.loadAnimationSetDialog.Filter = "QUROGames AnimationSet|*.animSet";
this.addEmptyFrameButton.TabIndex = 12;
this.addEmptyFrameButton.Text = "+";
this.addEmptyFrameButton.UseVisualStyleBackColor = true;
this.addEmptyFrameButton.Click += new System.EventHandler(this.addEmptyFrameButton_Click);
// //
// Form1 // Form1
// //
@@ -691,10 +692,10 @@
this.mainMenuStrip.PerformLayout(); this.mainMenuStrip.PerformLayout();
this.frameEditorPanel.ResumeLayout(false); this.frameEditorPanel.ResumeLayout(false);
this.frameEditorPanel.PerformLayout(); this.frameEditorPanel.PerformLayout();
this.subSpritePanel.ResumeLayout(false); this.frameSpritePanel.ResumeLayout(false);
this.subSpritePanel.PerformLayout(); this.frameSpritePanel.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.subSpriteYPosBox)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.spriteYPosBox)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.subSpriteXPosBox)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.spriteXPosBox)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.importDelayBox)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.importDelayBox)).EndInit();
this.animationPanel.ResumeLayout(false); this.animationPanel.ResumeLayout(false);
this.animationPanel.PerformLayout(); this.animationPanel.PerformLayout();
@@ -750,15 +751,15 @@
private System.Windows.Forms.OpenFileDialog loadAnimationSetDialog; private System.Windows.Forms.OpenFileDialog loadAnimationSetDialog;
private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem updateAnimationSpritesFromSpriteMapToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem updateAnimationSpritesFromSpriteMapToolStripMenuItem;
private System.Windows.Forms.ListBox subSpriteListBox; private System.Windows.Forms.ListBox frameSpriteListBox;
private System.Windows.Forms.Label subSpriteYPosLabel; private System.Windows.Forms.Label spriteYPosLabel;
private System.Windows.Forms.Label subSpriteXPosLabel; private System.Windows.Forms.Label spriteXPosLabel;
private System.Windows.Forms.Label subSpriteListLabel; private System.Windows.Forms.Label frameSpriteListLabel;
private System.Windows.Forms.Button addSpriteToSubSpritesButton; private System.Windows.Forms.Button addSpriteToFrameSpritesButton;
private System.Windows.Forms.NumericUpDown subSpriteYPosBox; private System.Windows.Forms.NumericUpDown spriteYPosBox;
private System.Windows.Forms.NumericUpDown subSpriteXPosBox; private System.Windows.Forms.NumericUpDown spriteXPosBox;
private System.Windows.Forms.Panel subSpritePanel; private System.Windows.Forms.Panel frameSpritePanel;
private System.Windows.Forms.Label subSpritePositionLabel; private System.Windows.Forms.Label frameSpritePositionLabel;
private System.Windows.Forms.Button addEmptyFrameButton; private System.Windows.Forms.Button addEmptyFrameButton;
} }
} }
+60 -50
View File
@@ -20,12 +20,22 @@ namespace AnimationEditor
{ {
public partial class Form1 : Form public partial class Form1 : Form
{ {
private Texture2D spriteSheet; private Texture2D _spriteSheet;
//property ensures animationPreview holds a copy of whatever spriteSheet the editor is using
private Texture2D spriteSheet
{
get { return _spriteSheet; }
set
{
_spriteSheet = value;
animationPreview.SpriteSheet = value;
}
}
private int frameRate; private int frameRate;
private BindingList<Sprite> sprites; private BindingList<Sprite> spriteSet;
private BindingList<Frame> frames; private BindingList<Frame> frames;
private BindingList<Sprite> subSprites; private BindingList<Sprite> frameSprites;
private BindingList<Animation> animations; private BindingList<Animation> animations;
private Animation currentAnimation; private Animation currentAnimation;
@@ -82,7 +92,8 @@ namespace AnimationEditor
{ {
if (spriteListBox.SelectedItem != null) if (spriteListBox.SelectedItem != null)
{ {
AddFrame(new Frame((Sprite)spriteListBox.SelectedItem, importDelay)); var spriteToAdd = spriteSet[spriteListBox.SelectedIndex].Clone();
AddFrame(new Frame(spriteToAdd, importDelay));
} }
} }
@@ -90,7 +101,11 @@ namespace AnimationEditor
{ {
int newSelectedIndex; int newSelectedIndex;
if (frames.Count == 1 && frames[0].Bounds == Microsoft.Xna.Framework.Rectangle.Empty) //if only frame in animation is uninitiated and input is not empty, clear the list
if (frameToAdd.Name != "empty" &&
frames.Count == 1 &&
frames[0].Sprites.Count == 1 &&
frames[0].Sprites[0].Name == "empty")
{ {
frames.Clear(); frames.Clear();
} }
@@ -123,7 +138,7 @@ namespace AnimationEditor
currentAnimation.IsLooping = animationLoopCheckBox.Checked; currentAnimation.IsLooping = animationLoopCheckBox.Checked;
} }
if (animationPreview.PreviewSprite == null) if (animationPreview.PreviewSprite == null)
animationPreview.PreviewSprite = new AnimatedSprite(spriteSheet, currentAnimation); animationPreview.PreviewSprite = new AnimatedSprite(currentAnimation);
else else
animationPreview.PreviewSprite.CurrentAnimation = currentAnimation; animationPreview.PreviewSprite.CurrentAnimation = currentAnimation;
frameTrackBar.Maximum = currentAnimation.Frames.Count() - 1; frameTrackBar.Maximum = currentAnimation.Frames.Count() - 1;
@@ -175,18 +190,19 @@ namespace AnimationEditor
animationPreview.PreviewSprite.CurrentFrameIndex = frameListBox.SelectedIndex; animationPreview.PreviewSprite.CurrentFrameIndex = frameListBox.SelectedIndex;
frameTrackBar.Value = frameListBox.SelectedIndex; frameTrackBar.Value = frameListBox.SelectedIndex;
} }
subSpritePanel.Enabled = true; frameSpritePanel.Enabled = true;
if (currentFrame.SubSprites != null) if (currentFrame.Sprites != null)
subSprites = new BindingList<Sprite>(currentFrame.SubSprites); frameSprites = new BindingList<Sprite>(currentFrame.Sprites);
else else
subSprites = new BindingList<Sprite>(); frameSprites = new BindingList<Sprite>();
subSpriteListBox.DataSource = subSprites; Console.WriteLine("Current frame has " + currentFrame.Sprites.Count + " sprites!");
subSpriteListBox.DisplayMember = "Name"; frameSpriteListBox.DataSource = frameSprites;
frameSpriteListBox.DisplayMember = "Name";
UpdateFrameInformation(); UpdateFrameInformation();
} }
else if (frameListBox.SelectedIndices.Count > 1) else if (frameListBox.SelectedIndices.Count > 1)
{ {
subSpritePanel.Enabled = false; frameSpritePanel.Enabled = false;
} }
} }
@@ -231,13 +247,13 @@ namespace AnimationEditor
loadedSpriteMap = IntermediateSerializer.Deserialize<Dictionary<string, Sprite>>(xmlRead, null); loadedSpriteMap = IntermediateSerializer.Deserialize<Dictionary<string, Sprite>>(xmlRead, null);
} }
sprites = new BindingList<Sprite>(); spriteSet = new BindingList<Sprite>();
foreach (KeyValuePair<string, Sprite> sprite in loadedSpriteMap) foreach (KeyValuePair<string, Sprite> sprite in loadedSpriteMap)
{ {
sprites.Add(sprite.Value); spriteSet.Add(sprite.Value);
} }
spriteListBox.DataSource = sprites; spriteListBox.DataSource = spriteSet;
spriteListBox.DisplayMember = "Name"; spriteListBox.DisplayMember = "Name";
spriteListBox.ValueMember = "Bounds"; spriteListBox.ValueMember = "Bounds";
@@ -500,19 +516,14 @@ namespace AnimationEditor
{ {
foreach(Frame frame in anim.Frames) foreach(Frame frame in anim.Frames)
{ {
if (loadedSpriteMap.ContainsKey(frame.Name)) if (frame.Sprites != null)
{ {
frame.Sprite = loadedSpriteMap[frame.Name]; for (int index = 0; index < frame.Sprites.Count; index++)
updateCounter++;
}
if (frame.SubSprites != null)
{
for (int index = 0; index < frame.SubSprites.Count; index++)
{ {
var subSprite = frame.SubSprites[index]; var sprite = frame.Sprites[index];
if (loadedSpriteMap.ContainsKey(subSprite.Name)) if (loadedSpriteMap.ContainsKey(sprite.Name))
{ {
frame.SubSprites[index] = loadedSpriteMap[subSprite.Name]; frame.Sprites[index] = loadedSpriteMap[sprite.Name];
updateCounter++; updateCounter++;
} }
} }
@@ -523,49 +534,48 @@ namespace AnimationEditor
MessageBox.Show("Updated " + updateCounter + " sprites!"); MessageBox.Show("Updated " + updateCounter + " sprites!");
} }
private void subSpriteListBox_SelectedIndexChanged(object sender, EventArgs e) private void frameSpriteListBox_SelectedIndexChanged(object sender, EventArgs e)
{ {
ReadSubSpritePosition(); ReadSpriteOffset();
} }
private void ReadSubSpritePosition() //load selected sprite's position into the sprite position boxes
private void ReadSpriteOffset()
{ {
reading = true; reading = true;
subSpriteXPosBox.Value = (int)currentFrame.SubSpritePositions[subSpriteListBox.SelectedIndex].X; spriteXPosBox.Value = (int)currentFrame.Sprites[frameSpriteListBox.SelectedIndex].Offset.X;
subSpriteYPosBox.Value = (int)currentFrame.SubSpritePositions[subSpriteListBox.SelectedIndex].Y; spriteYPosBox.Value = (int)currentFrame.Sprites[frameSpriteListBox.SelectedIndex].Offset.Y;
reading = false; reading = false;
} }
private void subSpriteXPosBox_ValueChanged(object sender, EventArgs e) //update X offset of selected sprite with position entered into spriteXPosBox
private void spriteXPosBox_ValueChanged(object sender, EventArgs e)
{ {
if (reading || subSpriteListBox.SelectedIndex >= currentFrame.SubSpritePositions.Count) if (reading || frameSpriteListBox.SelectedIndex >= currentFrame.Sprites.Count)
return; return;
var newPos = currentFrame.SubSpritePositions[subSpriteListBox.SelectedIndex]; var newPos = currentFrame.Sprites[frameSpriteListBox.SelectedIndex].Offset;
newPos.X = (float)subSpriteXPosBox.Value; newPos.X = (float)spriteXPosBox.Value;
currentFrame.SubSpritePositions[subSpriteListBox.SelectedIndex] = newPos; currentFrame.Sprites[frameSpriteListBox.SelectedIndex].Offset = newPos;
} }
private void subSpriteYPosBox_ValueChanged(object sender, EventArgs e) //update Y offset of selected sprite with position entered into spriteYPosBox
private void spriteYPosBox_ValueChanged(object sender, EventArgs e)
{ {
if (reading || subSpriteListBox.SelectedIndex >= currentFrame.SubSpritePositions.Count) if (reading || frameSpriteListBox.SelectedIndex >= currentFrame.Sprites.Count)
return; return;
var newPos = currentFrame.SubSpritePositions[subSpriteListBox.SelectedIndex]; var newPos = currentFrame.Sprites[frameSpriteListBox.SelectedIndex].Offset;
newPos.Y = (float)subSpriteYPosBox.Value; newPos.Y = (float)spriteYPosBox.Value;
currentFrame.SubSpritePositions[subSpriteListBox.SelectedIndex] = newPos; currentFrame.Sprites[frameSpriteListBox.SelectedIndex].Offset = newPos;
} }
private void addSpriteToSubSpritesButton_Click(object sender, EventArgs e) private void addSpriteToFrameSpritesButton_Click(object sender, EventArgs e)
{ {
var spriteToAdd = sprites[spriteListBox.SelectedIndex]; var spriteToAdd = spriteSet[spriteListBox.SelectedIndex].Clone();
if (currentFrame.SubSpritePositions == null) if (currentFrame.Sprites == null)
currentFrame.SubSpritePositions = new List<Vector2>(); currentFrame.Sprites = new List<Sprite>();
currentFrame.SubSpritePositions.Add(Vector2.Zero); currentFrame.Sprites.Add(spriteToAdd);
if (currentFrame.SubSprites == null)
currentFrame.SubSprites = new List<Sprite>();
currentFrame.SubSprites.Add(spriteToAdd);
subSprites.Add(spriteToAdd);
} }
private void addEmptyFrameButton_Click(object sender, EventArgs e) private void addEmptyFrameButton_Click(object sender, EventArgs e)
@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("AnimationLibrary")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("AnimationLibrary")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("69dadc27-fbeb-4625-9212-6eb5bed5102a")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -1,61 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{69DADC27-FBEB-4625-9212-6EB5BED5102A}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>QURO.AnimationLibrary</RootNamespace>
<AssemblyName>QURO.AnimationLibrary</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="MonoGame.Framework, Version=3.8.0.76, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>C:\Program Files (x86)\MonoGame\v3.0\Assemblies\DesktopGL\MonoGame.Framework.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AnimatedSprite.cs" />
<Compile Include="Animation.cs" />
<Compile Include="AnimationSet.cs" />
<Compile Include="Frame.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\QURO\QURO.csproj">
<Project>{4581e0c8-b14a-454d-9a7b-52d37535e7e9}</Project>
<Name>QURO</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>