From c15ccef4f89d8d4c307bb2a5ab0108458ab0dbd2 Mon Sep 17 00:00:00 2001 From: Nick Date: Wed, 24 Aug 2022 19:38:08 -0400 Subject: [PATCH] Potentially fix NRE when adding fog to non-planets --- NewHorizons/Builder/Atmosphere/AirBuilder.cs | 14 +++++++++----- NewHorizons/Handlers/PlanetCreationHandler.cs | 3 ++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/NewHorizons/Builder/Atmosphere/AirBuilder.cs b/NewHorizons/Builder/Atmosphere/AirBuilder.cs index b3cda09b..a916658d 100644 --- a/NewHorizons/Builder/Atmosphere/AirBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/AirBuilder.cs @@ -7,16 +7,16 @@ namespace NewHorizons.Builder.Atmosphere { public static void Make(GameObject planetGO, Sector sector, PlanetConfig config) { - GameObject airGO = new GameObject("Air"); + var airGO = new GameObject("Air"); airGO.SetActive(false); airGO.layer = 17; airGO.transform.parent = sector?.transform ? sector.transform : planetGO.transform; - SphereCollider sc = airGO.AddComponent(); + var sc = airGO.AddComponent(); sc.isTrigger = true; sc.radius = config.Atmosphere.size; - SimpleFluidVolume sfv = airGO.AddComponent(); + var sfv = airGO.AddComponent(); sfv._layer = 5; sfv._priority = 1; sfv._density = 1.2f; @@ -24,7 +24,11 @@ namespace NewHorizons.Builder.Atmosphere sfv._allowShipAutoroll = true; sfv._disableOnStart = false; - ShockLayerRuleset shockLayerRuleset = planetGO.GetComponentInChildren().gameObject.AddComponent(); + // Try to parent it to the same as other rulesets to match vanilla but if its null put it on the root object + var ruleSetGO = planetGO.GetComponentInChildren()?.gameObject; + if (ruleSetGO == null) ruleSetGO = planetGO; + + var shockLayerRuleset = ruleSetGO.AddComponent(); shockLayerRuleset._type = ShockLayerRuleset.ShockType.Atmospheric; shockLayerRuleset._radialCenter = airGO.transform; shockLayerRuleset._minShockSpeed = config.Atmosphere.minShockSpeed; @@ -56,7 +60,7 @@ namespace NewHorizons.Builder.Atmosphere vref._layer = 0; vref._priority = 0; - AudioSource AS = airGO.AddComponent(); + var AS = airGO.AddComponent(); AS.mute = false; AS.bypassEffects = false; AS.bypassListenerEffects = false; diff --git a/NewHorizons/Handlers/PlanetCreationHandler.cs b/NewHorizons/Handlers/PlanetCreationHandler.cs index d666420a..fb413718 100644 --- a/NewHorizons/Handlers/PlanetCreationHandler.cs +++ b/NewHorizons/Handlers/PlanetCreationHandler.cs @@ -525,7 +525,8 @@ namespace NewHorizons.Handlers { var surfaceSize = body.Config.Base.surfaceSize; - AirBuilder.Make(go, sector, body.Config); + if (body.Config.Atmosphere.size != 0) + AirBuilder.Make(go, sector, body.Config); if (!string.IsNullOrEmpty(body.Config.Atmosphere?.clouds?.texturePath)) {