From 80de0f1cb79b59487f4c4ce4285659554c5db78a Mon Sep 17 00:00:00 2001 From: xen-42 Date: Tue, 4 Feb 2025 18:46:40 -0500 Subject: [PATCH 1/5] Revert changes by MegaPiggy --- NewHorizons/Builder/General/GravityBuilder.cs | 7 +++---- NewHorizons/Builder/Orbital/FocalPointBuilder.cs | 8 ++++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/NewHorizons/Builder/General/GravityBuilder.cs b/NewHorizons/Builder/General/GravityBuilder.cs index 7d202e27..68a2be33 100644 --- a/NewHorizons/Builder/General/GravityBuilder.cs +++ b/NewHorizons/Builder/General/GravityBuilder.cs @@ -15,11 +15,10 @@ namespace NewHorizons.Builder.General var gravityRadius = GM / 0.1f; if (exponent == 2f) gravityRadius = Mathf.Sqrt(gravityRadius); - if (config.FocalPoint != null) gravityRadius = 0; // keep it at the lowest possible - else if (config.Base.soiOverride != 0f) gravityRadius = config.Base.soiOverride; - else if (config.Star != null) gravityRadius = Mathf.Min(gravityRadius, 15 * config.Base.surfaceSize); // To let you actually orbit things the way you would expect we cap this at 4x the diameter if its not a star (this is what giants deep has) - else gravityRadius = Mathf.Min(gravityRadius, 4 * config.Base.surfaceSize); + if (config.Star == null) gravityRadius = Mathf.Min(gravityRadius, 4 * config.Base.surfaceSize); + else gravityRadius = Mathf.Min(gravityRadius, 15 * config.Base.surfaceSize); + if (config.Base.soiOverride != 0f) gravityRadius = config.Base.soiOverride; var gravityGO = new GameObject("GravityWell"); gravityGO.transform.parent = planetGO.transform; diff --git a/NewHorizons/Builder/Orbital/FocalPointBuilder.cs b/NewHorizons/Builder/Orbital/FocalPointBuilder.cs index b3e63391..6183b6c8 100644 --- a/NewHorizons/Builder/Orbital/FocalPointBuilder.cs +++ b/NewHorizons/Builder/Orbital/FocalPointBuilder.cs @@ -57,11 +57,11 @@ namespace NewHorizons.Builder.Orbital config.Base.surfaceGravity = gravitationalMass * GravityVolume.GRAVITATIONAL_CONSTANT; config.Base.gravityFallOff = primary.Config.Base.gravityFallOff; + // Other stuff to make the barycenter not interact with anything in any way + config.Base.soiOverride = 0; var separation = primary.Config.Orbit.semiMajorAxis + secondary.Config.Orbit.semiMajorAxis; - var separationRadius = (separation / 2); - config.Base.soiOverride = separationRadius * 1.5f; - config.ReferenceFrame.bracketRadius = separationRadius; - config.ReferenceFrame.targetColliderRadius = separationRadius; + config.ReferenceFrame.bracketRadius = separation; + config.ReferenceFrame.targetColliderRadius = separation; config.Base.showMinimap = false; } From 786f1751dc5656c1b96957b328504a0838c9d81b Mon Sep 17 00:00:00 2001 From: xen-42 Date: Tue, 4 Feb 2025 18:46:49 -0500 Subject: [PATCH 2/5] Revert another change --- NewHorizons/Builder/General/GravityBuilder.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NewHorizons/Builder/General/GravityBuilder.cs b/NewHorizons/Builder/General/GravityBuilder.cs index 68a2be33..140a9742 100644 --- a/NewHorizons/Builder/General/GravityBuilder.cs +++ b/NewHorizons/Builder/General/GravityBuilder.cs @@ -48,7 +48,8 @@ namespace NewHorizons.Builder.General if (config.Base.surfaceGravity == 0) alignmentRadius = 0; gravityVolume._alignmentRadius = config.Base.gravityAlignmentRadiusOverride ?? alignmentRadius; - gravityVolume._upperSurfaceRadius = config.FocalPoint != null ? 0 : config.Base.surfaceSize; + // Nobody write any FocalPoint overriding here, those work as intended gravitationally so deal with it! + gravityVolume._upperSurfaceRadius = config.Base.surfaceSize; gravityVolume._lowerSurfaceRadius = 0; gravityVolume._layer = 3; gravityVolume._priority = config.Base.gravityVolumePriority; From 458c202fa45ec6d2368c719f591a5b31c8e0bc9a Mon Sep 17 00:00:00 2001 From: xen-42 Date: Tue, 4 Feb 2025 18:47:10 -0500 Subject: [PATCH 3/5] Revert "Revert changes by MegaPiggy" This reverts commit 80de0f1cb79b59487f4c4ce4285659554c5db78a. --- NewHorizons/Builder/General/GravityBuilder.cs | 7 ++++--- NewHorizons/Builder/Orbital/FocalPointBuilder.cs | 8 ++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/NewHorizons/Builder/General/GravityBuilder.cs b/NewHorizons/Builder/General/GravityBuilder.cs index 140a9742..8b366f62 100644 --- a/NewHorizons/Builder/General/GravityBuilder.cs +++ b/NewHorizons/Builder/General/GravityBuilder.cs @@ -15,10 +15,11 @@ namespace NewHorizons.Builder.General var gravityRadius = GM / 0.1f; if (exponent == 2f) gravityRadius = Mathf.Sqrt(gravityRadius); + if (config.FocalPoint != null) gravityRadius = 0; // keep it at the lowest possible + else if (config.Base.soiOverride != 0f) gravityRadius = config.Base.soiOverride; + else if (config.Star != null) gravityRadius = Mathf.Min(gravityRadius, 15 * config.Base.surfaceSize); // To let you actually orbit things the way you would expect we cap this at 4x the diameter if its not a star (this is what giants deep has) - if (config.Star == null) gravityRadius = Mathf.Min(gravityRadius, 4 * config.Base.surfaceSize); - else gravityRadius = Mathf.Min(gravityRadius, 15 * config.Base.surfaceSize); - if (config.Base.soiOverride != 0f) gravityRadius = config.Base.soiOverride; + else gravityRadius = Mathf.Min(gravityRadius, 4 * config.Base.surfaceSize); var gravityGO = new GameObject("GravityWell"); gravityGO.transform.parent = planetGO.transform; diff --git a/NewHorizons/Builder/Orbital/FocalPointBuilder.cs b/NewHorizons/Builder/Orbital/FocalPointBuilder.cs index 6183b6c8..b3e63391 100644 --- a/NewHorizons/Builder/Orbital/FocalPointBuilder.cs +++ b/NewHorizons/Builder/Orbital/FocalPointBuilder.cs @@ -57,11 +57,11 @@ namespace NewHorizons.Builder.Orbital config.Base.surfaceGravity = gravitationalMass * GravityVolume.GRAVITATIONAL_CONSTANT; config.Base.gravityFallOff = primary.Config.Base.gravityFallOff; - // Other stuff to make the barycenter not interact with anything in any way - config.Base.soiOverride = 0; var separation = primary.Config.Orbit.semiMajorAxis + secondary.Config.Orbit.semiMajorAxis; - config.ReferenceFrame.bracketRadius = separation; - config.ReferenceFrame.targetColliderRadius = separation; + var separationRadius = (separation / 2); + config.Base.soiOverride = separationRadius * 1.5f; + config.ReferenceFrame.bracketRadius = separationRadius; + config.ReferenceFrame.targetColliderRadius = separationRadius; config.Base.showMinimap = false; } From 35c0b934c7faa7e5cfc7a121a65dd304cd2d26c8 Mon Sep 17 00:00:00 2001 From: xen-42 Date: Tue, 4 Feb 2025 19:03:25 -0500 Subject: [PATCH 4/5] Try really hard to not have the gravity well for a focal point affect you --- NewHorizons/Builder/General/GravityBuilder.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/NewHorizons/Builder/General/GravityBuilder.cs b/NewHorizons/Builder/General/GravityBuilder.cs index 8b366f62..515ec4c3 100644 --- a/NewHorizons/Builder/General/GravityBuilder.cs +++ b/NewHorizons/Builder/General/GravityBuilder.cs @@ -27,15 +27,25 @@ namespace NewHorizons.Builder.General gravityGO.layer = Layer.BasicEffectVolume; gravityGO.SetActive(false); - var SC = gravityGO.AddComponent(); - SC.isTrigger = true; - SC.radius = gravityRadius; + var sphereCollider = gravityGO.AddComponent(); + sphereCollider.isTrigger = true; + sphereCollider.radius = gravityRadius; var owCollider = gravityGO.AddComponent(); owCollider.SetLODActivationMask(DynamicOccupant.Player); var owTriggerVolume = gravityGO.AddComponent(); + // If it's a focal point dont add collision stuff + if (config.FocalPoint != null) + { + owCollider.enabled = false; + owTriggerVolume.enabled = false; + sphereCollider.radius = 0; + sphereCollider.enabled = false; + sphereCollider.isTrigger = false; + } + // copied from th and qm var gravityVolume = gravityGO.AddComponent(); gravityVolume._cutoffAcceleration = 0f; From a8b9c3648ea1611d0b9603f3a251586eb17818d8 Mon Sep 17 00:00:00 2001 From: xen-42 Date: Tue, 4 Feb 2025 19:11:07 -0500 Subject: [PATCH 5/5] Update GravityBuilder.cs --- NewHorizons/Builder/General/GravityBuilder.cs | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/NewHorizons/Builder/General/GravityBuilder.cs b/NewHorizons/Builder/General/GravityBuilder.cs index 515ec4c3..e358d1a8 100644 --- a/NewHorizons/Builder/General/GravityBuilder.cs +++ b/NewHorizons/Builder/General/GravityBuilder.cs @@ -36,16 +36,6 @@ namespace NewHorizons.Builder.General var owTriggerVolume = gravityGO.AddComponent(); - // If it's a focal point dont add collision stuff - if (config.FocalPoint != null) - { - owCollider.enabled = false; - owTriggerVolume.enabled = false; - sphereCollider.radius = 0; - sphereCollider.enabled = false; - sphereCollider.isTrigger = false; - } - // copied from th and qm var gravityVolume = gravityGO.AddComponent(); gravityVolume._cutoffAcceleration = 0f; @@ -70,6 +60,21 @@ namespace NewHorizons.Builder.General gravityVolume._isPlanetGravityVolume = true; gravityVolume._cutoffRadius = 0f; + // If it's a focal point dont add collision stuff + // This is overkill + if (config.FocalPoint != null) + { + owCollider.enabled = false; + owTriggerVolume.enabled = false; + sphereCollider.radius = 0; + sphereCollider.enabled = false; + sphereCollider.isTrigger = false; + // This should ensure that even if the player enters the volume, it counts them as being inside the zero-gee cave equivalent + gravityVolume._cutoffRadius = gravityVolume._upperSurfaceRadius; + gravityVolume._lowerSurfaceRadius = gravityVolume._upperSurfaceRadius; + gravityVolume._cutoffAcceleration = 0; + } + gravityGO.SetActive(true); ao._gravityVolume = gravityVolume;