From 4559312f1c0cb486db49f15d5c6a9653cd66328d Mon Sep 17 00:00:00 2001 From: dexy Date: Sat, 30 Mar 2019 03:30:45 +1100 Subject: [PATCH] Handle mouse back/forward in RPF Explorer, Fix 2D mode ymap frustum culling, Added Disable embedded collisions flag name on Entity form --- CodeWalker.Core/World/Camera.cs | 16 ++++++++++++ ExploreForm.cs | 11 ++++++++ .../Panels/EditYmapEntityPanel.Designer.cs | 26 +++++++++---------- Rendering/Renderer.cs | 11 +++++++- 4 files changed, 50 insertions(+), 14 deletions(-) diff --git a/CodeWalker.Core/World/Camera.cs b/CodeWalker.Core/World/Camera.cs index c4e59eb..528fa29 100644 --- a/CodeWalker.Core/World/Camera.cs +++ b/CodeWalker.Core/World/Camera.cs @@ -349,5 +349,21 @@ namespace CodeWalker.World } return true; } + public bool ContainsAABBNoFrontClipNoOpt(ref Vector3 bmin, ref Vector3 bmax) + { + var c = (bmax + bmin) * 0.5f - Position; + var e = (bmax - bmin) * 0.5f; + for (int i = 0; i < 4; i++) + { + var pd = Planes[i].D; + var pn = Planes[i].Normal; + var d = (c.X * pn.X) + (c.Y * pn.Y) + (c.Z * pn.Z); + var r = (e.X * (pn.X > 0 ? pn.X : -pn.X)) + (e.Y * (pn.Y > 0 ? pn.Y : -pn.Y)) + (e.Z * (pn.Z > 0 ? pn.Z : -pn.Z)); + if ((d + r) < -pd) return false; + //if ((d - r) < -pd) ; //intersecting + } + return true; + } + } } diff --git a/ExploreForm.cs b/ExploreForm.cs index 2bbcfd7..1904db2 100644 --- a/ExploreForm.cs +++ b/ExploreForm.cs @@ -3039,6 +3039,17 @@ namespace CodeWalker + protected override void WndProc(ref Message m) + { + //handle back/forward buttons globally for all the form + if (m.Msg == 0x319) //WM_APPCOMMAND + { + var cmd = (m.LParam.ToInt64() >> 16) & 0xFFF; + if (cmd == 1) GoBack(); //APPCOMMAND_BROWSER_BACKWARD + if (cmd == 2) GoForward(); //APPCOMMAND_BROWSER_FORWARD + } + base.WndProc(ref m); + } private void ExploreForm_Load(object sender, EventArgs e) diff --git a/Project/Panels/EditYmapEntityPanel.Designer.cs b/Project/Panels/EditYmapEntityPanel.Designer.cs index 2243697..8fd1fcd 100644 --- a/Project/Panels/EditYmapEntityPanel.Designer.cs +++ b/Project/Panels/EditYmapEntityPanel.Designer.cs @@ -31,6 +31,7 @@ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EditYmapEntityPanel)); this.EntityTabControl = new System.Windows.Forms.TabControl(); this.EntityGeneralTabPage = new System.Windows.Forms.TabPage(); + this.EntityEditArchetypeButton = new System.Windows.Forms.Button(); this.EntityFlagsCheckedListBox = new System.Windows.Forms.CheckedListBox(); this.label13 = new System.Windows.Forms.Label(); this.label28 = new System.Windows.Forms.Label(); @@ -91,7 +92,6 @@ this.label4 = new System.Windows.Forms.Label(); this.MiloEntitySetsListBox = new System.Windows.Forms.CheckedListBox(); this.label2 = new System.Windows.Forms.Label(); - this.EntityEditArchetypeButton = new System.Windows.Forms.Button(); this.EntityTabControl.SuspendLayout(); this.EntityGeneralTabPage.SuspendLayout(); this.EntityLodTabPage.SuspendLayout(); @@ -161,6 +161,17 @@ this.EntityGeneralTabPage.Text = "General"; this.EntityGeneralTabPage.UseVisualStyleBackColor = true; // + // EntityEditArchetypeButton + // + this.EntityEditArchetypeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.EntityEditArchetypeButton.Location = new System.Drawing.Point(454, 59); + this.EntityEditArchetypeButton.Name = "EntityEditArchetypeButton"; + this.EntityEditArchetypeButton.Size = new System.Drawing.Size(95, 23); + this.EntityEditArchetypeButton.TabIndex = 35; + this.EntityEditArchetypeButton.Text = "Edit Archetype..."; + this.EntityEditArchetypeButton.UseVisualStyleBackColor = true; + this.EntityEditArchetypeButton.Click += new System.EventHandler(this.EntityEditArchetypeButton_Click); + // // EntityFlagsCheckedListBox // this.EntityFlagsCheckedListBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) @@ -170,7 +181,7 @@ this.EntityFlagsCheckedListBox.Items.AddRange(new object[] { "1 - Allow full rotation", "2 - Unk02", - "4 - Unk03", + "4 - Disable embedded collisions", "8 - Unk04", "16 - Unk05", "32 - Static entity", @@ -793,17 +804,6 @@ this.label2.TabIndex = 3; this.label2.Text = "DefaultEntitySets:"; // - // EntityEditArchetypeButton - // - this.EntityEditArchetypeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.EntityEditArchetypeButton.Location = new System.Drawing.Point(454, 59); - this.EntityEditArchetypeButton.Name = "EntityEditArchetypeButton"; - this.EntityEditArchetypeButton.Size = new System.Drawing.Size(95, 23); - this.EntityEditArchetypeButton.TabIndex = 35; - this.EntityEditArchetypeButton.Text = "Edit Archetype..."; - this.EntityEditArchetypeButton.UseVisualStyleBackColor = true; - this.EntityEditArchetypeButton.Click += new System.EventHandler(this.EntityEditArchetypeButton_Click); - // // EditYmapEntityPanel // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/Rendering/Renderer.cs b/Rendering/Renderer.cs index 02f0238..b0b2bee 100644 --- a/Rendering/Renderer.cs +++ b/Rendering/Renderer.cs @@ -1676,7 +1676,16 @@ namespace CodeWalker.Rendering { var eemin = ymap._CMapData.entitiesExtentsMin; var eemax = ymap._CMapData.entitiesExtentsMax; - if (!camera.ViewFrustum.ContainsAABBNoClipNoOpt(ref eemin, ref eemax)) + bool visible = false; + if (MapViewEnabled)//don't do front clipping in 2D mode + { + visible = camera.ViewFrustum.ContainsAABBNoFrontClipNoOpt(ref eemin, ref eemax); + } + else + { + visible = camera.ViewFrustum.ContainsAABBNoClipNoOpt(ref eemin, ref eemax); + } + if (!visible) { return false; }