From ef3ca9f756f994a0e5cd35ccbc62281faa0c84a9 Mon Sep 17 00:00:00 2001 From: DragonirHD Date: Tue, 10 Jan 2023 21:04:46 +0100 Subject: [PATCH 1/2] - Normalized rotation and position settings for circle and spiral - updated tooltips accordingly - fixed bug (originated from commit 3aee109) which broke the application if the chain window had no elements - Added some todos - Removed some todos --- .../CircleControl.Designer.cs | 19 +- MovementScriptGenerator/CircleControl.resx | 13 +- MovementScriptGenerator/CompareObject.cs | 3 +- MovementScriptGenerator/MainForm.Designer.cs | 2 +- MovementScriptGenerator/MainForm.cs | 22 +- MovementScriptGenerator/MainForm.resx | 6 - .../Modules/Moves/Circle.cs | 13 +- .../Modules/Moves/Spiral.cs | 24 +- .../SpiralControl.Designer.cs | 717 +++++++++--------- MovementScriptGenerator/SpiralControl.resx | 8 + 10 files changed, 422 insertions(+), 405 deletions(-) diff --git a/MovementScriptGenerator/CircleControl.Designer.cs b/MovementScriptGenerator/CircleControl.Designer.cs index 47398a1..310a452 100644 --- a/MovementScriptGenerator/CircleControl.Designer.cs +++ b/MovementScriptGenerator/CircleControl.Designer.cs @@ -204,7 +204,7 @@ private void InitializeComponent() this.lblDuration.TabIndex = 1; this.lblDuration.Text = "Duration"; this.lblDuration.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.ToolTip.SetToolTip(this.lblDuration, "the duration in seconds how long it takes to complete the sector."); + this.ToolTip.SetToolTip(this.lblDuration, "the duration in seconds how long it takes to complete the move."); // // tableLayoutPanel3 // @@ -248,8 +248,7 @@ private void InitializeComponent() this.lblHeight.TabIndex = 1; this.lblHeight.Text = "Height"; this.lblHeight.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.ToolTip.SetToolTip(this.lblHeight, "Defines the y-axis of the circle / how high the circle should be around the chara" + - "cter"); + this.ToolTip.SetToolTip(this.lblHeight, "Defines at what height (on the y-axis) the move will be executed at."); // // tableLayoutPanel4 // @@ -298,8 +297,8 @@ private void InitializeComponent() this.lblRotX.TabIndex = 1; this.lblRotX.Text = "X-Rotation"; this.lblRotX.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.ToolTip.SetToolTip(this.lblRotX, "The rotation of the camera on the x-axis (pitch).\r\n>0 -> tilt downwards\r\n<0 -> ti" + - "lt upwards"); + this.ToolTip.SetToolTip(this.lblRotX, "The rotation of the camera on the x-axis (pitch).\r\n>0 -> tilt upwards\r\n<0 -> tilt" + + " downwards"); // // tableLayoutPanel11 // @@ -398,8 +397,8 @@ private void InitializeComponent() this.lblRotZ.TabIndex = 1; this.lblRotZ.Text = "Z-Rotation"; this.lblRotZ.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.ToolTip.SetToolTip(this.lblRotZ, "The rotation of the camera on the z-axis (roll).\r\n>0 -> roll left\r\n<0 -> roll rig" + - "ht"); + this.ToolTip.SetToolTip(this.lblRotZ, "The rotation of the camera on the z-axis (roll).\r\n>0 -> roll right\r\n<0 -> roll le" + + "ft"); // // tableLayoutPanel12 // @@ -449,7 +448,7 @@ private void InitializeComponent() this.lblHorizontalRot.Text = "Horizontal Rotation"; this.lblHorizontalRot.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.ToolTip.SetToolTip(this.lblHorizontalRot, "defines where the camera should be around the\r\nplayer on the horizontal axis (in " + - "degrees).\r\n0 -> infront of the player\r\n90 -> right of the player\r\n180 -> behind " + + "degrees).\r\n0 -> behind the player\r\n90 -> right of the player\r\n180 -> infront of " + "the player"); // // tableLayoutPanel13 @@ -500,7 +499,7 @@ private void InitializeComponent() this.lblVerticalRot.Text = "Vertical Rotation"; this.lblVerticalRot.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.ToolTip.SetToolTip(this.lblVerticalRot, "defines where the camera should be around the\r\nplayer on the vertical axis (in de" + - "grees).\r\n0 -> infront of the player\r\n90 -> above of the player\r\n180 -> behind th" + + "grees).\r\n0 -> behind the player\r\n90 -> above of the player\r\n180 -> infront of th" + "e player\r\n270 -> below the player"); // // tableLayoutPanel1 @@ -688,7 +687,7 @@ private void InitializeComponent() this.lblRotation.TabIndex = 1; this.lblRotation.Text = "Rotation"; this.lblRotation.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.ToolTip.SetToolTip(this.lblRotation, "In which direction the camera should rotate around the character"); + this.ToolTip.SetToolTip(this.lblRotation, "In which direction the camera should rotate around the character."); // // ToolTip // diff --git a/MovementScriptGenerator/CircleControl.resx b/MovementScriptGenerator/CircleControl.resx index ec0d3b9..5c14535 100644 --- a/MovementScriptGenerator/CircleControl.resx +++ b/MovementScriptGenerator/CircleControl.resx @@ -126,12 +126,15 @@ If this is left at 0, the FOV of the last move that overwrites the FOV will be u If no previous move has overwritten the cameras FOV, the original FOV will be used. + + 17, 17 + Defines how many points the circle should consist of. The more points the more detailed the circle. One iteration will create 360 points. Two -> 720 points. (if the sector is on 360) keeping this setting at 1 will be fine for most cases. -Only change this setting if you feel like the movement of the camera is not smooth enough. +Only change this setting if you feel like the movement of the camera is not smooth enough! defines the sector of the circle, in which the camera will move. @@ -139,8 +142,10 @@ The sector is the area of the circle between the starting point and this value. 360 -> the camera will do a full circle 180 -> the camera will do half of a circle 720 -> the camera will do two circles -(If you want the camera to constantly rotate around you, leave this on 360 and -don't add any other moves to the movementscript. The circle will repeat if it's -the only move in the script) +(If you want the camera to constantly rotate around you, leave this on 360, +don't add any other moves to the chain and make sure that the loop setting is activated.) + + 17, 17 + \ No newline at end of file diff --git a/MovementScriptGenerator/CompareObject.cs b/MovementScriptGenerator/CompareObject.cs index 0a2c3fd..ae5fe73 100644 --- a/MovementScriptGenerator/CompareObject.cs +++ b/MovementScriptGenerator/CompareObject.cs @@ -12,7 +12,7 @@ public static class CompareObject public static bool Compare(T e1, T e2) { bool flag = true; - bool match = false; + bool match; int countFirst, countSecond; foreach (PropertyInfo propObj1 in e1.GetType().GetProperties()) { @@ -32,6 +32,7 @@ public static bool Compare(T e1, T e2) countSecond = objList2.Count - 1; while (countSecond > -1) { + //TODO Compare throws an error here sometimes. Message: The type arguments for method cannot be inferred from the usage match = Compare(objList1[countFirst], objList2[countSecond]); if (match) { diff --git a/MovementScriptGenerator/MainForm.Designer.cs b/MovementScriptGenerator/MainForm.Designer.cs index ecc1191..bb103bd 100644 --- a/MovementScriptGenerator/MainForm.Designer.cs +++ b/MovementScriptGenerator/MainForm.Designer.cs @@ -228,7 +228,7 @@ private void InitializeComponent() this.lblScriptName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.ToolTip.SetToolTip(this.lblScriptName, "Defines the name of the movement script file that will be generated / added to.\r\n" + "Add this name to the script list in your camera\'s Json file to make the camera u" + - "se this script.\r\n"); + "se this script."); // // checkSyncToSong // diff --git a/MovementScriptGenerator/MainForm.cs b/MovementScriptGenerator/MainForm.cs index 7b00380..da01f4c 100644 --- a/MovementScriptGenerator/MainForm.cs +++ b/MovementScriptGenerator/MainForm.cs @@ -57,7 +57,7 @@ public Main() { //TODO Create own form/implementation of MessageBox so that it can always be displayed in the middle of the parent window //TODO Find better name for "other Elements" - //TODO Find name for Elements that change the behaviour of an existing move: MODIFIER / MODIFYING ELEMENTS + //TODO Find name for Elements that change the behaviour of an existing move: modifier / modifying elements? InitializeComponent(); InitializeComponentView(); PopulateComponentsWithSavedSettings(); @@ -219,12 +219,18 @@ private void UpdateChainWindow() { tvChain.SelectedNode = tvChain.Nodes[tvChain.Nodes.Count - 1]; } + + tvChain.EndUpdate(); + if (tvChain.SelectedNode == null) { DisableElementOptionsAll(); } - tvChain.EndUpdate(); - tvChain.SelectedNode.EnsureVisible(); + else + { + //Can't be done while in update block + tvChain.SelectedNode.EnsureVisible(); + } } private void UpdateChainWindow(int indexOfNodeToBeSelected) @@ -247,12 +253,16 @@ private void UpdateChainWindow(int indexOfNodeToBeSelected) tvChain.SelectedNode = tvChain.Nodes[tvChain.Nodes.Count - 1]; } } - if(tvChain.SelectedNode == null) + tvChain.EndUpdate(); + if (tvChain.SelectedNode == null) { DisableElementOptionsAll(); } - tvChain.EndUpdate(); - tvChain.SelectedNode.EnsureVisible(); + else + { + //Can't be done while in update block + tvChain.SelectedNode.EnsureVisible(); + } } private bool GenerateMovementScriptFile(MovementScript script, string filePath) diff --git a/MovementScriptGenerator/MainForm.resx b/MovementScriptGenerator/MainForm.resx index cf8b5df..70bf743 100644 --- a/MovementScriptGenerator/MainForm.resx +++ b/MovementScriptGenerator/MainForm.resx @@ -120,9 +120,6 @@ 17, 17 - - 17, 17 - Select the directory in which the movement script file will be generated in. Make sure that this is the correct directory, else camera2 will not be able to use the script! @@ -149,9 +146,6 @@ If a file with the same name exists, that file will be overwritten! Useful for tweaking specific settings and then applying them again to the selected element. Can also be done by doubleclicking the element. - - 17, 17 - Element types are divided into two subtypes: move diff --git a/MovementScriptGenerator/Modules/Moves/Circle.cs b/MovementScriptGenerator/Modules/Moves/Circle.cs index e56a0bc..27037b4 100644 --- a/MovementScriptGenerator/Modules/Moves/Circle.cs +++ b/MovementScriptGenerator/Modules/Moves/Circle.cs @@ -42,6 +42,7 @@ public Circle( public override List GenerateFrames() { + //TODO Can this be simplified? Less inversion / *-1 List frames = new List(); double verticalRadiant = RotVertical * Math.PI / 180; @@ -53,13 +54,13 @@ public override List GenerateFrames() float maxDegrees = SectorDegrees - 1; float initialDegreeAdded = 1; - if (!RotateClockwise) { + if (RotateClockwise) { initialDegree *= -1; maxDegrees *= -1; initialDegreeAdded *= -1; } - for (float i = initialDegree; (RotateClockwise && i <= maxDegrees) || (!RotateClockwise && i >= maxDegrees); i += (float)initialDegreeAdded / Iterations) + for (float i = initialDegree; (!RotateClockwise && i <= maxDegrees) || (RotateClockwise && i >= maxDegrees); i += (float)initialDegreeAdded / Iterations) { float currentHorizontalDegree = i + RotHorizontal; double currentHorizontalRadiant = currentHorizontalDegree * Math.PI / 180; @@ -73,11 +74,11 @@ public override List GenerateFrames() frame.Position.x = xHorizontal * zVertical * Distance; frame.Position.y = yVertical * Distance + Height; - frame.Position.z = zHorizontal * zVertical * Distance; + frame.Position.z = (zHorizontal * -1) * zVertical * Distance; - frame.Rotation.x = RotVertical + RotX; - frame.Rotation.y = currentHorizontalDegree + RotY -180; - frame.Rotation.z = RotZ; + frame.Rotation.x = RotVertical + (RotX * -1); + frame.Rotation.y = (currentHorizontalDegree * -1) + RotY; + frame.Rotation.z = (RotZ * -1); frame.Duration = Duration / Math.Abs(maxDegrees) / Iterations; diff --git a/MovementScriptGenerator/Modules/Moves/Spiral.cs b/MovementScriptGenerator/Modules/Moves/Spiral.cs index 62d0865..2e145ec 100644 --- a/MovementScriptGenerator/Modules/Moves/Spiral.cs +++ b/MovementScriptGenerator/Modules/Moves/Spiral.cs @@ -71,14 +71,14 @@ public override List GenerateFrames() { x = xHorizontal * zVertical * StartDistance, y = yVertical * StartDistance + Height, - z = zHorizontal * zVertical * StartDistance + z = (zHorizontal *-1) * zVertical * StartDistance }, Rotation = new Rotation() { - x = RotVertical + RotX, - y = RotHorizontal + RotY - 180, - z = 0 + RotZ + x = RotVertical + (RotX * -1), + y = (RotHorizontal * -1) + RotY, + z = 0 + (RotZ * -1) }, HoldTime = StartHold, @@ -103,14 +103,14 @@ public override List GenerateFrames() { x = xHorizontal * zVertical * spiralFrameDistance, y = yVertical * spiralFrameDistance + Height, - z = zHorizontal * zVertical * spiralFrameDistance + z = (zHorizontal * -1) * zVertical * spiralFrameDistance }, Rotation = new Rotation() { - x = RotVertical + RotX, - y = RotHorizontal + RotY - 180, - z = SpiralClockwise ? -rotation + RotZ : rotation + RotZ + x = RotVertical + (RotX * -1), + y = (RotHorizontal * -1) + RotY, + z = SpiralClockwise ? -rotation + (RotZ * -1): rotation + (RotZ * -1) }, Duration = Duration / SpiralAmmount / 360, @@ -130,14 +130,14 @@ public override List GenerateFrames() { x = xHorizontal * zVertical * EndDistance, y = yVertical * EndDistance + Height, - z = zHorizontal * zVertical * EndDistance + z = (zHorizontal *-1) * zVertical * EndDistance }, Rotation = new Rotation() { - x = RotVertical + RotX, - y = RotHorizontal + RotY - 180, - z = SpiralAmmount > 0 ? (SpiralClockwise ? -360 + RotZ : 360 + RotZ) : 0 + RotZ + x = RotVertical + (RotX * -1), + y = (RotHorizontal *-1) + RotY, + z = SpiralAmmount > 0 ? (SpiralClockwise ? -360 + (RotZ * -1) : 360 + (RotZ * -1)) : 0 + (RotZ * -1) }, HoldTime = EndHold, diff --git a/MovementScriptGenerator/SpiralControl.Designer.cs b/MovementScriptGenerator/SpiralControl.Designer.cs index a762bee..ab98bd3 100644 --- a/MovementScriptGenerator/SpiralControl.Designer.cs +++ b/MovementScriptGenerator/SpiralControl.Designer.cs @@ -32,30 +32,39 @@ private void InitializeComponent() this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SpiralControl)); this.flpSpiralControl = new System.Windows.Forms.FlowLayoutPanel(); - this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.numStartDistance = new System.Windows.Forms.NumericUpDown(); - this.lblStartDistance = new System.Windows.Forms.Label(); - this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); - this.numEndDistance = new System.Windows.Forms.NumericUpDown(); - this.lblEndDistance = new System.Windows.Forms.Label(); + this.tableLayoutPanel6 = new System.Windows.Forms.TableLayoutPanel(); + this.numFOV = new System.Windows.Forms.NumericUpDown(); + this.lblFOV = new System.Windows.Forms.Label(); + this.tableLayoutPanel9 = new System.Windows.Forms.TableLayoutPanel(); + this.numDuration = new System.Windows.Forms.NumericUpDown(); + this.lblDuration = new System.Windows.Forms.Label(); this.tableLayoutPanel11 = new System.Windows.Forms.TableLayoutPanel(); this.numHeight = new System.Windows.Forms.NumericUpDown(); this.lblHeight = new System.Windows.Forms.Label(); + this.tableLayoutPanel13 = new System.Windows.Forms.TableLayoutPanel(); + this.numRotX = new System.Windows.Forms.NumericUpDown(); + this.lblRotX = new System.Windows.Forms.Label(); + this.tableLayoutPanel14 = new System.Windows.Forms.TableLayoutPanel(); + this.numRotY = new System.Windows.Forms.NumericUpDown(); + this.lblRotY = new System.Windows.Forms.Label(); + this.tableLayoutPanel15 = new System.Windows.Forms.TableLayoutPanel(); + this.numRotZ = new System.Windows.Forms.NumericUpDown(); + this.lblRotZ = new System.Windows.Forms.Label(); this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); this.numRotHorizontal = new System.Windows.Forms.NumericUpDown(); this.lblHorizontalRot = new System.Windows.Forms.Label(); this.tableLayoutPanel10 = new System.Windows.Forms.TableLayoutPanel(); this.numRotVertical = new System.Windows.Forms.NumericUpDown(); this.lblVerticalRot = new System.Windows.Forms.Label(); - this.tableLayoutPanel6 = new System.Windows.Forms.TableLayoutPanel(); - this.numFOV = new System.Windows.Forms.NumericUpDown(); - this.lblFOV = new System.Windows.Forms.Label(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.numStartDistance = new System.Windows.Forms.NumericUpDown(); + this.lblStartDistance = new System.Windows.Forms.Label(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.numEndDistance = new System.Windows.Forms.NumericUpDown(); + this.lblEndDistance = new System.Windows.Forms.Label(); this.tableLayoutPanel8 = new System.Windows.Forms.TableLayoutPanel(); this.cbSpiralRotation = new System.Windows.Forms.ComboBox(); this.lblSpiralRotation = new System.Windows.Forms.Label(); - this.tableLayoutPanel9 = new System.Windows.Forms.TableLayoutPanel(); - this.numDuration = new System.Windows.Forms.NumericUpDown(); - this.lblDuration = new System.Windows.Forms.Label(); this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel(); this.numSpiralAmmount = new System.Windows.Forms.NumericUpDown(); this.lblSpiralAmmount = new System.Windows.Forms.Label(); @@ -69,31 +78,28 @@ private void InitializeComponent() this.checkEase = new System.Windows.Forms.CheckBox(); this.lblEase = new System.Windows.Forms.Label(); this.ToolTip = new System.Windows.Forms.ToolTip(this.components); - this.tableLayoutPanel13 = new System.Windows.Forms.TableLayoutPanel(); - this.numRotX = new System.Windows.Forms.NumericUpDown(); - this.lblRotX = new System.Windows.Forms.Label(); - this.tableLayoutPanel14 = new System.Windows.Forms.TableLayoutPanel(); - this.numRotY = new System.Windows.Forms.NumericUpDown(); - this.lblRotY = new System.Windows.Forms.Label(); - this.tableLayoutPanel15 = new System.Windows.Forms.TableLayoutPanel(); - this.numRotZ = new System.Windows.Forms.NumericUpDown(); - this.lblRotZ = new System.Windows.Forms.Label(); this.flpSpiralControl.SuspendLayout(); - this.tableLayoutPanel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numStartDistance)).BeginInit(); - this.tableLayoutPanel2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numEndDistance)).BeginInit(); + this.tableLayoutPanel6.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numFOV)).BeginInit(); + this.tableLayoutPanel9.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numDuration)).BeginInit(); this.tableLayoutPanel11.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numHeight)).BeginInit(); + this.tableLayoutPanel13.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numRotX)).BeginInit(); + this.tableLayoutPanel14.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numRotY)).BeginInit(); + this.tableLayoutPanel15.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numRotZ)).BeginInit(); this.tableLayoutPanel3.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numRotHorizontal)).BeginInit(); this.tableLayoutPanel10.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numRotVertical)).BeginInit(); - this.tableLayoutPanel6.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numFOV)).BeginInit(); + this.tableLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numStartDistance)).BeginInit(); + this.tableLayoutPanel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numEndDistance)).BeginInit(); this.tableLayoutPanel8.SuspendLayout(); - this.tableLayoutPanel9.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numDuration)).BeginInit(); this.tableLayoutPanel4.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numSpiralAmmount)).BeginInit(); this.tableLayoutPanel5.SuspendLayout(); @@ -101,12 +107,6 @@ private void InitializeComponent() this.tableLayoutPanel7.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numEndHoldTime)).BeginInit(); this.tableLayoutPanel12.SuspendLayout(); - this.tableLayoutPanel13.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numRotX)).BeginInit(); - this.tableLayoutPanel14.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numRotY)).BeginInit(); - this.tableLayoutPanel15.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numRotZ)).BeginInit(); this.SuspendLayout(); // // flpSpiralControl @@ -137,97 +137,92 @@ private void InitializeComponent() this.flpSpiralControl.Size = new System.Drawing.Size(260, 481); this.flpSpiralControl.TabIndex = 1; // - // tableLayoutPanel1 + // tableLayoutPanel6 // - this.tableLayoutPanel1.AutoSize = true; - this.tableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - 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.numStartDistance, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.lblStartDistance, 0, 0); - this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 259); - this.tableLayoutPanel1.MinimumSize = new System.Drawing.Size(0, 32); - this.tableLayoutPanel1.Name = "tableLayoutPanel1"; - this.tableLayoutPanel1.RowCount = 1; - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 32F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(254, 32); - this.tableLayoutPanel1.TabIndex = 8; + this.tableLayoutPanel6.AutoSize = true; + this.tableLayoutPanel6.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.tableLayoutPanel6.ColumnCount = 2; + this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel6.Controls.Add(this.numFOV, 0, 0); + this.tableLayoutPanel6.Controls.Add(this.lblFOV, 0, 0); + this.tableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel6.Location = new System.Drawing.Point(3, 3); + this.tableLayoutPanel6.Name = "tableLayoutPanel6"; + this.tableLayoutPanel6.RowCount = 1; + this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel6.Size = new System.Drawing.Size(254, 26); + this.tableLayoutPanel6.TabIndex = 0; // - // numStartDistance + // numFOV // - this.numStartDistance.DecimalPlaces = 5; - this.numStartDistance.Location = new System.Drawing.Point(130, 3); - this.numStartDistance.Name = "numStartDistance"; - this.numStartDistance.Size = new System.Drawing.Size(120, 20); - this.numStartDistance.TabIndex = 1; - this.numStartDistance.Value = new decimal(new int[] { - 1, + this.numFOV.Location = new System.Drawing.Point(130, 3); + this.numFOV.Maximum = new decimal(new int[] { + 1000, 0, 0, 0}); + this.numFOV.Name = "numFOV"; + this.numFOV.Size = new System.Drawing.Size(120, 20); + this.numFOV.TabIndex = 2; // - // lblStartDistance + // lblFOV // - this.lblStartDistance.AccessibleDescription = ""; - this.lblStartDistance.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.lblFOV.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); - this.lblStartDistance.AutoSize = true; - this.lblStartDistance.Location = new System.Drawing.Point(3, 0); - this.lblStartDistance.Name = "lblStartDistance"; - this.lblStartDistance.Size = new System.Drawing.Size(74, 32); - this.lblStartDistance.TabIndex = 2; - this.lblStartDistance.Text = "Start Distance"; - this.lblStartDistance.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.ToolTip.SetToolTip(this.lblStartDistance, "defines how far the camera should be away from the\r\nplayer at the start of the mo" + - "ve"); + this.lblFOV.AutoSize = true; + this.lblFOV.Location = new System.Drawing.Point(3, 0); + this.lblFOV.Name = "lblFOV"; + this.lblFOV.Size = new System.Drawing.Size(28, 26); + this.lblFOV.TabIndex = 1; + this.lblFOV.Text = "FOV"; + this.lblFOV.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.ToolTip.SetToolTip(this.lblFOV, resources.GetString("lblFOV.ToolTip")); // - // tableLayoutPanel2 + // tableLayoutPanel9 // - this.tableLayoutPanel2.AutoSize = true; - this.tableLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.tableLayoutPanel2.ColumnCount = 2; - this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel2.Controls.Add(this.numEndDistance, 0, 0); - this.tableLayoutPanel2.Controls.Add(this.lblEndDistance, 0, 0); - this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 297); - this.tableLayoutPanel2.Name = "tableLayoutPanel2"; - this.tableLayoutPanel2.RowCount = 1; - this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); - this.tableLayoutPanel2.Size = new System.Drawing.Size(254, 26); - this.tableLayoutPanel2.TabIndex = 9; + this.tableLayoutPanel9.AutoSize = true; + this.tableLayoutPanel9.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.tableLayoutPanel9.ColumnCount = 2; + this.tableLayoutPanel9.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel9.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel9.Controls.Add(this.numDuration, 0, 0); + this.tableLayoutPanel9.Controls.Add(this.lblDuration, 0, 0); + this.tableLayoutPanel9.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel9.Location = new System.Drawing.Point(3, 35); + this.tableLayoutPanel9.Name = "tableLayoutPanel9"; + this.tableLayoutPanel9.RowCount = 1; + this.tableLayoutPanel9.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel9.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel9.Size = new System.Drawing.Size(254, 26); + this.tableLayoutPanel9.TabIndex = 1; // - // numEndDistance + // numDuration // - this.numEndDistance.DecimalPlaces = 5; - this.numEndDistance.Location = new System.Drawing.Point(130, 3); - this.numEndDistance.Name = "numEndDistance"; - this.numEndDistance.Size = new System.Drawing.Size(120, 20); - this.numEndDistance.TabIndex = 1; - this.numEndDistance.Value = new decimal(new int[] { + this.numDuration.DecimalPlaces = 5; + this.numDuration.Location = new System.Drawing.Point(130, 3); + this.numDuration.Name = "numDuration"; + this.numDuration.Size = new System.Drawing.Size(120, 20); + this.numDuration.TabIndex = 1; + this.numDuration.Value = new decimal(new int[] { 1, 0, 0, 0}); // - // lblEndDistance + // lblDuration // - this.lblEndDistance.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.lblDuration.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); - this.lblEndDistance.AutoSize = true; - this.lblEndDistance.Location = new System.Drawing.Point(3, 0); - this.lblEndDistance.Name = "lblEndDistance"; - this.lblEndDistance.Size = new System.Drawing.Size(71, 26); - this.lblEndDistance.TabIndex = 2; - this.lblEndDistance.Text = "End Distance"; - this.lblEndDistance.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.ToolTip.SetToolTip(this.lblEndDistance, "defines how far the camera should be away from the\r\nplayer at the end of the move" + - ""); + this.lblDuration.AutoSize = true; + this.lblDuration.Location = new System.Drawing.Point(3, 0); + this.lblDuration.Name = "lblDuration"; + this.lblDuration.Size = new System.Drawing.Size(47, 26); + this.lblDuration.TabIndex = 1; + this.lblDuration.Text = "Duration"; + this.lblDuration.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.ToolTip.SetToolTip(this.lblDuration, resources.GetString("lblDuration.ToolTip")); // // tableLayoutPanel11 // @@ -273,6 +268,156 @@ private void InitializeComponent() this.lblHeight.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.ToolTip.SetToolTip(this.lblHeight, "Defines at what height (on the y-axis) the move will be executed at.\r\nIf End Dist" + "ance is defined as 0, this will be the height at which the camera will stop at."); + // + // tableLayoutPanel13 + // + this.tableLayoutPanel13.AutoSize = true; + this.tableLayoutPanel13.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.tableLayoutPanel13.ColumnCount = 2; + this.tableLayoutPanel13.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel13.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel13.Controls.Add(this.numRotX, 0, 0); + this.tableLayoutPanel13.Controls.Add(this.lblRotX, 0, 0); + this.tableLayoutPanel13.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel13.Location = new System.Drawing.Point(3, 99); + this.tableLayoutPanel13.Name = "tableLayoutPanel13"; + this.tableLayoutPanel13.RowCount = 1; + this.tableLayoutPanel13.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel13.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel13.Size = new System.Drawing.Size(254, 26); + this.tableLayoutPanel13.TabIndex = 3; + // + // numRotX + // + this.numRotX.DecimalPlaces = 5; + this.numRotX.Location = new System.Drawing.Point(130, 3); + this.numRotX.Maximum = new decimal(new int[] { + 360, + 0, + 0, + 0}); + this.numRotX.Minimum = new decimal(new int[] { + 360, + 0, + 0, + -2147483648}); + this.numRotX.Name = "numRotX"; + this.numRotX.Size = new System.Drawing.Size(120, 20); + this.numRotX.TabIndex = 1; + // + // lblRotX + // + this.lblRotX.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.lblRotX.AutoSize = true; + this.lblRotX.Location = new System.Drawing.Point(3, 0); + this.lblRotX.Name = "lblRotX"; + this.lblRotX.Size = new System.Drawing.Size(57, 26); + this.lblRotX.TabIndex = 1; + this.lblRotX.Text = "X-Rotation"; + this.lblRotX.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.ToolTip.SetToolTip(this.lblRotX, "The rotation of the camera on the x-axis (pitch).\r\n>0 -> tilt upwards\r\n<0 -> tilt" + + " downwards"); + // + // tableLayoutPanel14 + // + this.tableLayoutPanel14.AutoSize = true; + this.tableLayoutPanel14.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.tableLayoutPanel14.ColumnCount = 2; + this.tableLayoutPanel14.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel14.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel14.Controls.Add(this.numRotY, 0, 0); + this.tableLayoutPanel14.Controls.Add(this.lblRotY, 0, 0); + this.tableLayoutPanel14.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel14.Location = new System.Drawing.Point(3, 131); + this.tableLayoutPanel14.Name = "tableLayoutPanel14"; + this.tableLayoutPanel14.RowCount = 1; + this.tableLayoutPanel14.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel14.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel14.Size = new System.Drawing.Size(254, 26); + this.tableLayoutPanel14.TabIndex = 4; + // + // numRotY + // + this.numRotY.DecimalPlaces = 5; + this.numRotY.Location = new System.Drawing.Point(130, 3); + this.numRotY.Maximum = new decimal(new int[] { + 360, + 0, + 0, + 0}); + this.numRotY.Minimum = new decimal(new int[] { + 360, + 0, + 0, + -2147483648}); + this.numRotY.Name = "numRotY"; + this.numRotY.Size = new System.Drawing.Size(120, 20); + this.numRotY.TabIndex = 1; + // + // lblRotY + // + this.lblRotY.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.lblRotY.AutoSize = true; + this.lblRotY.Location = new System.Drawing.Point(3, 0); + this.lblRotY.Name = "lblRotY"; + this.lblRotY.Size = new System.Drawing.Size(57, 26); + this.lblRotY.TabIndex = 1; + this.lblRotY.Text = "Y-Rotation"; + this.lblRotY.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.ToolTip.SetToolTip(this.lblRotY, "The rotation of the camera on the y-axis (yaw).\r\n>0 -> turn right\r\n<0 -> turn lef" + + "t"); + // + // tableLayoutPanel15 + // + this.tableLayoutPanel15.AutoSize = true; + this.tableLayoutPanel15.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.tableLayoutPanel15.ColumnCount = 2; + this.tableLayoutPanel15.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel15.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel15.Controls.Add(this.numRotZ, 0, 0); + this.tableLayoutPanel15.Controls.Add(this.lblRotZ, 0, 0); + this.tableLayoutPanel15.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel15.Location = new System.Drawing.Point(3, 163); + this.tableLayoutPanel15.Name = "tableLayoutPanel15"; + this.tableLayoutPanel15.RowCount = 1; + this.tableLayoutPanel15.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel15.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel15.Size = new System.Drawing.Size(254, 26); + this.tableLayoutPanel15.TabIndex = 5; + // + // numRotZ + // + this.numRotZ.DecimalPlaces = 5; + this.numRotZ.Location = new System.Drawing.Point(130, 3); + this.numRotZ.Maximum = new decimal(new int[] { + 360, + 0, + 0, + 0}); + this.numRotZ.Minimum = new decimal(new int[] { + 360, + 0, + 0, + -2147483648}); + this.numRotZ.Name = "numRotZ"; + this.numRotZ.Size = new System.Drawing.Size(120, 20); + this.numRotZ.TabIndex = 1; + // + // lblRotZ + // + this.lblRotZ.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.lblRotZ.AutoSize = true; + this.lblRotZ.Location = new System.Drawing.Point(3, 0); + this.lblRotZ.Name = "lblRotZ"; + this.lblRotZ.Size = new System.Drawing.Size(57, 26); + this.lblRotZ.TabIndex = 1; + this.lblRotZ.Text = "Z-Rotation"; + this.lblRotZ.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.ToolTip.SetToolTip(this.lblRotZ, "The rotation of the camera on the z-axis (roll).\r\n>0 -> roll to the right\r\n<0 -> " + + "roll to the left"); // // tableLayoutPanel3 // @@ -322,7 +467,7 @@ private void InitializeComponent() this.lblHorizontalRot.Text = "Horizontal Rotation"; this.lblHorizontalRot.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.ToolTip.SetToolTip(this.lblHorizontalRot, "defines where the camera should be around the\r\nplayer on the horizontal axis (in " + - "degrees).\r\n0 -> infront of the player\r\n90 -> right of the player\r\n180 -> behind " + + "degrees).\r\n0 -> behind the player\r\n90 -> right of the player\r\n180 -> infront of " + "the player"); // // tableLayoutPanel10 @@ -373,51 +518,100 @@ private void InitializeComponent() this.lblVerticalRot.Text = "Vertical Rotation"; this.lblVerticalRot.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.ToolTip.SetToolTip(this.lblVerticalRot, "defines where the camera should be around the\r\nplayer on the vertical axis (in de" + - "grees).\r\n0 -> infront of the player\r\n90 -> above of the player\r\n180 -> behind th" + + "grees).\r\n0 -> behind the player\r\n90 -> above of the player\r\n180 -> infront of th" + "e player\r\n270 -> below the player"); // - // tableLayoutPanel6 + // tableLayoutPanel1 // - this.tableLayoutPanel6.AutoSize = true; - this.tableLayoutPanel6.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.tableLayoutPanel6.ColumnCount = 2; - this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel6.Controls.Add(this.numFOV, 0, 0); - this.tableLayoutPanel6.Controls.Add(this.lblFOV, 0, 0); - this.tableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel6.Location = new System.Drawing.Point(3, 3); - this.tableLayoutPanel6.Name = "tableLayoutPanel6"; - this.tableLayoutPanel6.RowCount = 1; - this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); - this.tableLayoutPanel6.Size = new System.Drawing.Size(254, 26); - this.tableLayoutPanel6.TabIndex = 0; + this.tableLayoutPanel1.AutoSize = true; + this.tableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + 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.numStartDistance, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.lblStartDistance, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 259); + this.tableLayoutPanel1.MinimumSize = new System.Drawing.Size(0, 32); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 1; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 32F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(254, 32); + this.tableLayoutPanel1.TabIndex = 8; // - // numFOV + // numStartDistance // - this.numFOV.Location = new System.Drawing.Point(130, 3); - this.numFOV.Maximum = new decimal(new int[] { - 1000, + this.numStartDistance.DecimalPlaces = 5; + this.numStartDistance.Location = new System.Drawing.Point(130, 3); + this.numStartDistance.Name = "numStartDistance"; + this.numStartDistance.Size = new System.Drawing.Size(120, 20); + this.numStartDistance.TabIndex = 1; + this.numStartDistance.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // lblStartDistance + // + this.lblStartDistance.AccessibleDescription = ""; + this.lblStartDistance.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.lblStartDistance.AutoSize = true; + this.lblStartDistance.Location = new System.Drawing.Point(3, 0); + this.lblStartDistance.Name = "lblStartDistance"; + this.lblStartDistance.Size = new System.Drawing.Size(74, 32); + this.lblStartDistance.TabIndex = 2; + this.lblStartDistance.Text = "Start Distance"; + this.lblStartDistance.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.ToolTip.SetToolTip(this.lblStartDistance, "defines how far the camera should be away from the\r\nplayer at the start of the mo" + + "ve"); + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.AutoSize = true; + this.tableLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.tableLayoutPanel2.ColumnCount = 2; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.Controls.Add(this.numEndDistance, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.lblEndDistance, 0, 0); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 297); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 1; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(254, 26); + this.tableLayoutPanel2.TabIndex = 9; + // + // numEndDistance + // + this.numEndDistance.DecimalPlaces = 5; + this.numEndDistance.Location = new System.Drawing.Point(130, 3); + this.numEndDistance.Name = "numEndDistance"; + this.numEndDistance.Size = new System.Drawing.Size(120, 20); + this.numEndDistance.TabIndex = 1; + this.numEndDistance.Value = new decimal(new int[] { + 1, 0, 0, 0}); - this.numFOV.Name = "numFOV"; - this.numFOV.Size = new System.Drawing.Size(120, 20); - this.numFOV.TabIndex = 2; // - // lblFOV + // lblEndDistance // - this.lblFOV.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.lblEndDistance.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); - this.lblFOV.AutoSize = true; - this.lblFOV.Location = new System.Drawing.Point(3, 0); - this.lblFOV.Name = "lblFOV"; - this.lblFOV.Size = new System.Drawing.Size(28, 26); - this.lblFOV.TabIndex = 1; - this.lblFOV.Text = "FOV"; - this.lblFOV.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.ToolTip.SetToolTip(this.lblFOV, resources.GetString("lblFOV.ToolTip")); + this.lblEndDistance.AutoSize = true; + this.lblEndDistance.Location = new System.Drawing.Point(3, 0); + this.lblEndDistance.Name = "lblEndDistance"; + this.lblEndDistance.Size = new System.Drawing.Size(71, 26); + this.lblEndDistance.TabIndex = 2; + this.lblEndDistance.Text = "End Distance"; + this.lblEndDistance.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.ToolTip.SetToolTip(this.lblEndDistance, "defines how far the camera should be away from the\r\nplayer at the end of the move" + + ""); // // tableLayoutPanel8 // @@ -462,51 +656,6 @@ private void InitializeComponent() this.lblSpiralRotation.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.ToolTip.SetToolTip(this.lblSpiralRotation, "Defines in which direction the camera will rotate during a spiral.\r\n(disabled if " + "spiral Ammount is zero)"); - // - // tableLayoutPanel9 - // - this.tableLayoutPanel9.AutoSize = true; - this.tableLayoutPanel9.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.tableLayoutPanel9.ColumnCount = 2; - this.tableLayoutPanel9.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel9.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel9.Controls.Add(this.numDuration, 0, 0); - this.tableLayoutPanel9.Controls.Add(this.lblDuration, 0, 0); - this.tableLayoutPanel9.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel9.Location = new System.Drawing.Point(3, 35); - this.tableLayoutPanel9.Name = "tableLayoutPanel9"; - this.tableLayoutPanel9.RowCount = 1; - this.tableLayoutPanel9.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel9.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); - this.tableLayoutPanel9.Size = new System.Drawing.Size(254, 26); - this.tableLayoutPanel9.TabIndex = 1; - // - // numDuration - // - this.numDuration.DecimalPlaces = 5; - this.numDuration.Location = new System.Drawing.Point(130, 3); - this.numDuration.Name = "numDuration"; - this.numDuration.Size = new System.Drawing.Size(120, 20); - this.numDuration.TabIndex = 1; - this.numDuration.Value = new decimal(new int[] { - 1, - 0, - 0, - 0}); - // - // lblDuration - // - this.lblDuration.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); - this.lblDuration.AutoSize = true; - this.lblDuration.Location = new System.Drawing.Point(3, 0); - this.lblDuration.Name = "lblDuration"; - this.lblDuration.Size = new System.Drawing.Size(47, 26); - this.lblDuration.TabIndex = 1; - this.lblDuration.Text = "Duration"; - this.lblDuration.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.ToolTip.SetToolTip(this.lblDuration, "How long the move should take (in seconds) from the start distance to the end dis" + - "tance.\r\n(Also effects the rotation speed of the spirals)"); // // tableLayoutPanel4 // @@ -642,9 +791,9 @@ private void InitializeComponent() this.lblEndHoldTime.AutoSize = true; this.lblEndHoldTime.Location = new System.Drawing.Point(3, 0); this.lblEndHoldTime.Name = "lblEndHoldTime"; - this.lblEndHoldTime.Size = new System.Drawing.Size(71, 26); + this.lblEndHoldTime.Size = new System.Drawing.Size(77, 26); this.lblEndHoldTime.TabIndex = 1; - this.lblEndHoldTime.Text = "EndHoldTime"; + this.lblEndHoldTime.Text = "End Hold Time"; this.lblEndHoldTime.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.ToolTip.SetToolTip(this.lblEndHoldTime, "The time (in seconds) how long the camera should stay at the end distance, before" + " ending the move."); @@ -700,156 +849,6 @@ private void InitializeComponent() this.ToolTip.InitialDelay = 500; this.ToolTip.IsBalloon = true; this.ToolTip.ReshowDelay = 100; - // - // tableLayoutPanel13 - // - this.tableLayoutPanel13.AutoSize = true; - this.tableLayoutPanel13.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.tableLayoutPanel13.ColumnCount = 2; - this.tableLayoutPanel13.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel13.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel13.Controls.Add(this.numRotX, 0, 0); - this.tableLayoutPanel13.Controls.Add(this.lblRotX, 0, 0); - this.tableLayoutPanel13.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel13.Location = new System.Drawing.Point(3, 99); - this.tableLayoutPanel13.Name = "tableLayoutPanel13"; - this.tableLayoutPanel13.RowCount = 1; - this.tableLayoutPanel13.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel13.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); - this.tableLayoutPanel13.Size = new System.Drawing.Size(254, 26); - this.tableLayoutPanel13.TabIndex = 3; - // - // numRotX - // - this.numRotX.DecimalPlaces = 5; - this.numRotX.Location = new System.Drawing.Point(130, 3); - this.numRotX.Maximum = new decimal(new int[] { - 360, - 0, - 0, - 0}); - this.numRotX.Minimum = new decimal(new int[] { - 360, - 0, - 0, - -2147483648}); - this.numRotX.Name = "numRotX"; - this.numRotX.Size = new System.Drawing.Size(120, 20); - this.numRotX.TabIndex = 1; - // - // lblRotX - // - this.lblRotX.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); - this.lblRotX.AutoSize = true; - this.lblRotX.Location = new System.Drawing.Point(3, 0); - this.lblRotX.Name = "lblRotX"; - this.lblRotX.Size = new System.Drawing.Size(57, 26); - this.lblRotX.TabIndex = 1; - this.lblRotX.Text = "X-Rotation"; - this.lblRotX.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.ToolTip.SetToolTip(this.lblRotX, "The rotation of the camera on the x-axis (pitch).\r\n>0 -> tilt downwards\r\n<0 -> ti" + - "lt upwards"); - // - // tableLayoutPanel14 - // - this.tableLayoutPanel14.AutoSize = true; - this.tableLayoutPanel14.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.tableLayoutPanel14.ColumnCount = 2; - this.tableLayoutPanel14.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel14.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel14.Controls.Add(this.numRotY, 0, 0); - this.tableLayoutPanel14.Controls.Add(this.lblRotY, 0, 0); - this.tableLayoutPanel14.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel14.Location = new System.Drawing.Point(3, 131); - this.tableLayoutPanel14.Name = "tableLayoutPanel14"; - this.tableLayoutPanel14.RowCount = 1; - this.tableLayoutPanel14.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel14.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); - this.tableLayoutPanel14.Size = new System.Drawing.Size(254, 26); - this.tableLayoutPanel14.TabIndex = 4; - // - // numRotY - // - this.numRotY.DecimalPlaces = 5; - this.numRotY.Location = new System.Drawing.Point(130, 3); - this.numRotY.Maximum = new decimal(new int[] { - 360, - 0, - 0, - 0}); - this.numRotY.Minimum = new decimal(new int[] { - 360, - 0, - 0, - -2147483648}); - this.numRotY.Name = "numRotY"; - this.numRotY.Size = new System.Drawing.Size(120, 20); - this.numRotY.TabIndex = 1; - // - // lblRotY - // - this.lblRotY.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); - this.lblRotY.AutoSize = true; - this.lblRotY.Location = new System.Drawing.Point(3, 0); - this.lblRotY.Name = "lblRotY"; - this.lblRotY.Size = new System.Drawing.Size(57, 26); - this.lblRotY.TabIndex = 1; - this.lblRotY.Text = "Y-Rotation"; - this.lblRotY.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.ToolTip.SetToolTip(this.lblRotY, "The rotation of the camera on the y-axis (yaw).\r\n>0 -> turn right\r\n<0 -> turn lef" + - "t"); - // - // tableLayoutPanel15 - // - this.tableLayoutPanel15.AutoSize = true; - this.tableLayoutPanel15.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.tableLayoutPanel15.ColumnCount = 2; - this.tableLayoutPanel15.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel15.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel15.Controls.Add(this.numRotZ, 0, 0); - this.tableLayoutPanel15.Controls.Add(this.lblRotZ, 0, 0); - this.tableLayoutPanel15.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel15.Location = new System.Drawing.Point(3, 163); - this.tableLayoutPanel15.Name = "tableLayoutPanel15"; - this.tableLayoutPanel15.RowCount = 1; - this.tableLayoutPanel15.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel15.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); - this.tableLayoutPanel15.Size = new System.Drawing.Size(254, 26); - this.tableLayoutPanel15.TabIndex = 5; - // - // numRotZ - // - this.numRotZ.DecimalPlaces = 5; - this.numRotZ.Location = new System.Drawing.Point(130, 3); - this.numRotZ.Maximum = new decimal(new int[] { - 360, - 0, - 0, - 0}); - this.numRotZ.Minimum = new decimal(new int[] { - 360, - 0, - 0, - -2147483648}); - this.numRotZ.Name = "numRotZ"; - this.numRotZ.Size = new System.Drawing.Size(120, 20); - this.numRotZ.TabIndex = 1; - // - // lblRotZ - // - this.lblRotZ.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); - this.lblRotZ.AutoSize = true; - this.lblRotZ.Location = new System.Drawing.Point(3, 0); - this.lblRotZ.Name = "lblRotZ"; - this.lblRotZ.Size = new System.Drawing.Size(57, 26); - this.lblRotZ.TabIndex = 1; - this.lblRotZ.Text = "Z-Rotation"; - this.lblRotZ.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.ToolTip.SetToolTip(this.lblRotZ, "The rotation of the camera on the z-axis (roll).\r\n>0 -> roll to the right\r\n<0 -> " + - "roll to the left"); // // SpiralControl // @@ -864,29 +863,38 @@ private void InitializeComponent() this.Load += new System.EventHandler(this.SpiralControl_Load); this.flpSpiralControl.ResumeLayout(false); this.flpSpiralControl.PerformLayout(); - this.tableLayoutPanel1.ResumeLayout(false); - this.tableLayoutPanel1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numStartDistance)).EndInit(); - this.tableLayoutPanel2.ResumeLayout(false); - this.tableLayoutPanel2.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numEndDistance)).EndInit(); + this.tableLayoutPanel6.ResumeLayout(false); + this.tableLayoutPanel6.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numFOV)).EndInit(); + this.tableLayoutPanel9.ResumeLayout(false); + this.tableLayoutPanel9.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numDuration)).EndInit(); this.tableLayoutPanel11.ResumeLayout(false); this.tableLayoutPanel11.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numHeight)).EndInit(); + this.tableLayoutPanel13.ResumeLayout(false); + this.tableLayoutPanel13.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numRotX)).EndInit(); + this.tableLayoutPanel14.ResumeLayout(false); + this.tableLayoutPanel14.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numRotY)).EndInit(); + this.tableLayoutPanel15.ResumeLayout(false); + this.tableLayoutPanel15.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numRotZ)).EndInit(); this.tableLayoutPanel3.ResumeLayout(false); this.tableLayoutPanel3.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numRotHorizontal)).EndInit(); this.tableLayoutPanel10.ResumeLayout(false); this.tableLayoutPanel10.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numRotVertical)).EndInit(); - this.tableLayoutPanel6.ResumeLayout(false); - this.tableLayoutPanel6.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numFOV)).EndInit(); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numStartDistance)).EndInit(); + this.tableLayoutPanel2.ResumeLayout(false); + this.tableLayoutPanel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numEndDistance)).EndInit(); this.tableLayoutPanel8.ResumeLayout(false); this.tableLayoutPanel8.PerformLayout(); - this.tableLayoutPanel9.ResumeLayout(false); - this.tableLayoutPanel9.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numDuration)).EndInit(); this.tableLayoutPanel4.ResumeLayout(false); this.tableLayoutPanel4.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numSpiralAmmount)).EndInit(); @@ -898,15 +906,6 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.numEndHoldTime)).EndInit(); this.tableLayoutPanel12.ResumeLayout(false); this.tableLayoutPanel12.PerformLayout(); - this.tableLayoutPanel13.ResumeLayout(false); - this.tableLayoutPanel13.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numRotX)).EndInit(); - this.tableLayoutPanel14.ResumeLayout(false); - this.tableLayoutPanel14.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numRotY)).EndInit(); - this.tableLayoutPanel15.ResumeLayout(false); - this.tableLayoutPanel15.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numRotZ)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); diff --git a/MovementScriptGenerator/SpiralControl.resx b/MovementScriptGenerator/SpiralControl.resx index 6aad7bf..f2e4ade 100644 --- a/MovementScriptGenerator/SpiralControl.resx +++ b/MovementScriptGenerator/SpiralControl.resx @@ -125,4 +125,12 @@ If this is left at 0, the FOV of the last move that overwrites the FOV will be used. If no previous move has overwritten the cameras FOV, the original FOV will be used. + + How long the move should take (in seconds) from the start distance to the end distance. +(Also effects the rotation speed of the spirals) +(Has no effect on the "start hold time" and "end hold time" settings) + + + 17, 17 + \ No newline at end of file From 36f9e56c003dca194a46a01d59af0ab965c38f35 Mon Sep 17 00:00:00 2001 From: DragonirHD Date: Thu, 12 Jan 2023 00:25:16 +0100 Subject: [PATCH 2/2] Added Image for new wiki page --- Showcase/CameraRotationAndLocation.png | Bin 0 -> 10541 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Showcase/CameraRotationAndLocation.png diff --git a/Showcase/CameraRotationAndLocation.png b/Showcase/CameraRotationAndLocation.png new file mode 100644 index 0000000000000000000000000000000000000000..abb06faa94e718feabf6b71dc8a3c58d700fcb9e GIT binary patch literal 10541 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 literal 0 HcmV?d00001