CustomSkinEditor - Add Animate checkbox to stop renderer from animating the model

This commit is contained in:
miku-666
2024-05-18 09:10:33 +02:00
parent f8730065ed
commit d3087e1647
4 changed files with 112 additions and 61 deletions

View File

@@ -70,6 +70,7 @@
this.removeOffsetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.renderer3D1 = new PckStudio.Rendering.SkinRenderer();
this.uvPictureBox = new PckStudio.ToolboxItems.InterpolationPictureBox();
this.skinAnimateCheckBox = new MetroFramework.Controls.MetroCheckBox();
label5 = new System.Windows.Forms.Label();
label3 = new System.Windows.Forms.Label();
label7 = new System.Windows.Forms.Label();
@@ -411,6 +412,7 @@
// renderer3D1
//
resources.ApplyResources(this.renderer3D1, "renderer3D1");
this.renderer3D1.Animate = true;
this.renderer3D1.BackColor = System.Drawing.Color.DimGray;
this.renderer3D1.CapeTexture = null;
this.renderer3D1.ClampModel = false;
@@ -433,10 +435,21 @@
this.uvPictureBox.Name = "uvPictureBox";
this.uvPictureBox.TabStop = false;
//
// skinAnimateCheckBox
//
resources.ApplyResources(this.skinAnimateCheckBox, "skinAnimateCheckBox");
this.skinAnimateCheckBox.Checked = true;
this.skinAnimateCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
this.skinAnimateCheckBox.Name = "skinAnimateCheckBox";
this.skinAnimateCheckBox.Theme = MetroFramework.MetroThemeStyle.Dark;
this.skinAnimateCheckBox.UseSelectable = true;
this.skinAnimateCheckBox.CheckedChanged += new System.EventHandler(this.skinAnimateCheckBox_CheckedChanged);
//
// CustomSkinEditor
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.skinAnimateCheckBox);
this.Controls.Add(this.metroTabControl1);
this.Controls.Add(this.skinNameLabel);
this.Controls.Add(this.showToolsCheckBox);
@@ -525,5 +538,6 @@
private MetroFramework.Controls.MetroContextMenu offsetTabContextMenu;
private System.Windows.Forms.ToolStripMenuItem addOffsetToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem removeOffsetToolStripMenuItem;
private MetroFramework.Controls.MetroCheckBox skinAnimateCheckBox;
}
}

View File

@@ -374,5 +374,10 @@ namespace PckStudio.Forms.Editor
skinPartListBox.ClearSelected();
renderer3D1.SelectedIndex = skinPartListBox.SelectedIndex;
}
private void skinAnimateCheckBox_CheckedChanged(object sender, EventArgs e)
{
renderer3D1.Animate = skinAnimateCheckBox.Checked;
}
}
}

View File

@@ -157,7 +157,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label5.ZOrder" xml:space="preserve">
<value>28</value>
<value>29</value>
</data>
<metadata name="label3.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
@@ -196,7 +196,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>27</value>
<value>28</value>
</data>
<metadata name="label7.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
@@ -235,7 +235,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;label7.ZOrder" xml:space="preserve">
<value>25</value>
<value>26</value>
</data>
<metadata name="labelTextureMappingPreview.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
@@ -271,7 +271,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;labelTextureMappingPreview.ZOrder" xml:space="preserve">
<value>23</value>
<value>24</value>
</data>
<metadata name="skinPartTabContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
@@ -382,7 +382,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;buttonDone.ZOrder" xml:space="preserve">
<value>26</value>
<value>27</value>
</data>
<data name="exportTextureButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -409,7 +409,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;exportTextureButton.ZOrder" xml:space="preserve">
<value>22</value>
<value>23</value>
</data>
<data name="importTextureButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -436,16 +436,16 @@
<value>$this</value>
</data>
<data name="&gt;&gt;importTextureButton.ZOrder" xml:space="preserve">
<value>24</value>
<value>25</value>
</data>
<data name="importSkinButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="importSkinButton.Location" type="System.Drawing.Point, System.Drawing">
<value>190, 558</value>
<value>27, 553</value>
</data>
<data name="importSkinButton.Size" type="System.Drawing.Size, System.Drawing">
<value>105, 21</value>
<value>80, 21</value>
</data>
<data name="importSkinButton.TabIndex" type="System.Int32, mscorlib">
<value>96</value>
@@ -463,16 +463,16 @@
<value>$this</value>
</data>
<data name="&gt;&gt;importSkinButton.ZOrder" xml:space="preserve">
<value>21</value>
<value>22</value>
</data>
<data name="exportSkinButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="exportSkinButton.Location" type="System.Drawing.Point, System.Drawing">
<value>301, 558</value>
<value>113, 553</value>
</data>
<data name="exportSkinButton.Size" type="System.Drawing.Size, System.Drawing">
<value>105, 21</value>
<value>67, 21</value>
</data>
<data name="exportSkinButton.TabIndex" type="System.Int32, mscorlib">
<value>97</value>
@@ -490,7 +490,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;exportSkinButton.ZOrder" xml:space="preserve">
<value>20</value>
<value>21</value>
</data>
<data name="outlineColorButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
@@ -520,7 +520,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;outlineColorButton.ZOrder" xml:space="preserve">
<value>19</value>
<value>20</value>
</data>
<data name="generateTextureCheckBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
@@ -550,7 +550,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;generateTextureCheckBox.ZOrder" xml:space="preserve">
<value>18</value>
<value>19</value>
</data>
<data name="checkGuide.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
@@ -580,7 +580,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;checkGuide.ZOrder" xml:space="preserve">
<value>17</value>
<value>18</value>
</data>
<data name="showArmorCheckbox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
@@ -610,7 +610,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;showArmorCheckbox.ZOrder" xml:space="preserve">
<value>16</value>
<value>17</value>
</data>
<data name="SizeXUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -640,7 +640,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;SizeXUpDown.ZOrder" xml:space="preserve">
<value>15</value>
<value>16</value>
</data>
<data name="SizeYUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -670,7 +670,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;SizeYUpDown.ZOrder" xml:space="preserve">
<value>14</value>
<value>15</value>
</data>
<data name="SizeZUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -700,7 +700,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;SizeZUpDown.ZOrder" xml:space="preserve">
<value>13</value>
<value>14</value>
</data>
<data name="TextureXUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -727,7 +727,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;TextureXUpDown.ZOrder" xml:space="preserve">
<value>12</value>
<value>13</value>
</data>
<data name="TextureYUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -754,7 +754,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;TextureYUpDown.ZOrder" xml:space="preserve">
<value>11</value>
<value>12</value>
</data>
<data name="PosZUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -784,7 +784,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;PosZUpDown.ZOrder" xml:space="preserve">
<value>7</value>
<value>8</value>
</data>
<data name="PosYUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -814,7 +814,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;PosYUpDown.ZOrder" xml:space="preserve">
<value>8</value>
<value>9</value>
</data>
<data name="PosXUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -844,7 +844,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;PosXUpDown.ZOrder" xml:space="preserve">
<value>9</value>
<value>10</value>
</data>
<data name="skinPartListBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
@@ -898,13 +898,13 @@
<value>$this</value>
</data>
<data name="&gt;&gt;clampToViewCheckbox.ZOrder" xml:space="preserve">
<value>6</value>
<value>7</value>
</data>
<data name="captureScreenshotButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="captureScreenshotButton.Location" type="System.Drawing.Point, System.Drawing">
<value>508, 558</value>
<value>190, 553</value>
</data>
<data name="captureScreenshotButton.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 21</value>
@@ -925,7 +925,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;captureScreenshotButton.ZOrder" xml:space="preserve">
<value>5</value>
<value>6</value>
</data>
<data name="showToolsCheckBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
@@ -955,7 +955,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;showToolsCheckBox.ZOrder" xml:space="preserve">
<value>4</value>
<value>5</value>
</data>
<data name="skinNameLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
@@ -964,7 +964,7 @@
<value>True</value>
</data>
<data name="skinNameLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>23, 559</value>
<value>370, 553</value>
</data>
<data name="skinNameLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>73, 19</value>
@@ -985,7 +985,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;skinNameLabel.ZOrder" xml:space="preserve">
<value>3</value>
<value>4</value>
</data>
<data name="skinPartsTabPage.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 38</value>
@@ -1102,7 +1102,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;metroTabControl1.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="renderer3D1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
@@ -1126,7 +1126,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;renderer3D1.ZOrder" xml:space="preserve">
<value>10</value>
<value>11</value>
</data>
<data name="uvPictureBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -1159,7 +1159,34 @@
<value>$this</value>
</data>
<data name="&gt;&gt;uvPictureBox.ZOrder" xml:space="preserve">
<value>29</value>
<value>30</value>
</data>
<data name="skinAnimateCheckBox.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="skinAnimateCheckBox.Location" type="System.Drawing.Point, System.Drawing">
<value>553, 553</value>
</data>
<data name="skinAnimateCheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>68, 15</value>
</data>
<data name="skinAnimateCheckBox.TabIndex" type="System.Int32, mscorlib">
<value>168</value>
</data>
<data name="skinAnimateCheckBox.Text" xml:space="preserve">
<value>Animate</value>
</data>
<data name="&gt;&gt;skinAnimateCheckBox.Name" xml:space="preserve">
<value>skinAnimateCheckBox</value>
</data>
<data name="&gt;&gt;skinAnimateCheckBox.Type" xml:space="preserve">
<value>MetroFramework.Controls.MetroCheckBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a</value>
</data>
<data name="&gt;&gt;skinAnimateCheckBox.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;skinAnimateCheckBox.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>

View File

@@ -87,6 +87,7 @@ namespace PckStudio.Rendering
public bool ClampModel { get; set; } = false;
public bool ShowArmor { get; set; } = false;
public bool Animate { get; set; } = true;
public bool ShowGuideLines
{
get => guidelineMode != GuidelineMode.None;
@@ -1002,45 +1003,49 @@ namespace PckStudio.Rendering
skinTexture.Bind();
if (ANIM.GetFlag(SkinAnimFlag.DINNERBONE))
{
transform = Pivot(head.GetFaceCenter(0, Cube.Face.Top), Vector3.UnitY * 12f, transform * Matrix4.CreateRotationZ(MathHelper.DegreesToRadians(-180f)));
}
var legRightMatrix = Matrix4.Identity;
var legLeftMatrix = Matrix4.Identity;
var armRightMatrix = Matrix4.Identity;
var armLeftMatrix = Matrix4.Identity;
if (!ANIM.GetFlag(SkinAnimFlag.STATIC_ARMS))
if (Animate)
{
armRightMatrix = Matrix4.CreateRotationX(MathHelper.DegreesToRadians(animationCurrentRotationAngle));
armLeftMatrix = Matrix4.CreateRotationX(MathHelper.DegreesToRadians((ANIM.GetFlag(SkinAnimFlag.SYNCED_ARMS) ? 1f : -1f) * animationCurrentRotationAngle));
}
if (ANIM.GetFlag(SkinAnimFlag.DINNERBONE))
{
transform = Pivot(head.GetFaceCenter(0, Cube.Face.Top), Vector3.UnitY * 12f, transform * Matrix4.CreateRotationZ(MathHelper.DegreesToRadians(-180f)));
}
if (ANIM.GetFlag(SkinAnimFlag.ZOMBIE_ARMS))
{
var rotation = Matrix4.CreateRotationX(MathHelper.DegreesToRadians(-90f));
armRightMatrix = rotation;
armLeftMatrix = rotation;
}
if (!ANIM.GetFlag(SkinAnimFlag.STATIC_ARMS))
{
armRightMatrix = Matrix4.CreateRotationX(MathHelper.DegreesToRadians(animationCurrentRotationAngle));
armLeftMatrix = Matrix4.CreateRotationX(MathHelper.DegreesToRadians((ANIM.GetFlag(SkinAnimFlag.SYNCED_ARMS) ? 1f : -1f) * animationCurrentRotationAngle));
}
if (ANIM.GetFlag(SkinAnimFlag.STATUE_OF_LIBERTY))
{
armRightMatrix = Matrix4.CreateRotationX(MathHelper.DegreesToRadians(-180f));
armLeftMatrix = Matrix4.CreateRotationX(0f);
}
if (ANIM.GetFlag(SkinAnimFlag.ZOMBIE_ARMS))
{
var rotation = Matrix4.CreateRotationX(MathHelper.DegreesToRadians(-90f));
armRightMatrix = rotation;
armLeftMatrix = rotation;
}
if (!ANIM.GetFlag(SkinAnimFlag.STATIC_LEGS))
{
legRightMatrix = Matrix4.CreateRotationX(MathHelper.DegreesToRadians((ANIM.GetFlag(SkinAnimFlag.SYNCED_LEGS) ? 1f : -1f) * animationCurrentRotationAngle));
legLeftMatrix = Matrix4.CreateRotationX(MathHelper.DegreesToRadians(animationCurrentRotationAngle));
if (ANIM.GetFlag(SkinAnimFlag.STATUE_OF_LIBERTY))
{
armRightMatrix = Matrix4.CreateRotationX(MathHelper.DegreesToRadians(-180f));
armLeftMatrix = Matrix4.CreateRotationX(0f);
}
if (!ANIM.GetFlag(SkinAnimFlag.STATIC_LEGS))
{
legRightMatrix = Matrix4.CreateRotationX(MathHelper.DegreesToRadians((ANIM.GetFlag(SkinAnimFlag.SYNCED_LEGS) ? 1f : -1f) * animationCurrentRotationAngle));
legLeftMatrix = Matrix4.CreateRotationX(MathHelper.DegreesToRadians(animationCurrentRotationAngle));
}
armRightMatrix = RightArmMatrix * armRightMatrix;
armLeftMatrix = LeftArmMatrix * armLeftMatrix;
}
RenderBodyPart(skinShader, Matrix4.Identity, transform, "HEAD", "HEADWEAR");
RenderBodyPart(skinShader, Matrix4.Identity, transform, "BODY", "JACKET");
RenderBodyPart(skinShader, RightArmMatrix * armRightMatrix, transform, "ARM0", "SLEEVE0");
RenderBodyPart(skinShader, LeftArmMatrix * armLeftMatrix, transform, "ARM1", "SLEEVE1");
RenderBodyPart(skinShader, armRightMatrix, transform, "ARM0", "SLEEVE0");
RenderBodyPart(skinShader, armLeftMatrix, transform, "ARM1", "SLEEVE1");
RenderBodyPart(skinShader, legRightMatrix, transform, "LEG0", "PANTS0");
RenderBodyPart(skinShader, legLeftMatrix, transform, "LEG1", "PANTS1");