Potentially fix NRE when adding fog to non-planets

This commit is contained in:
Nick 2022-08-24 19:38:08 -04:00
parent 51b6cf7d4c
commit c15ccef4f8
2 changed files with 11 additions and 6 deletions

View File

@ -7,16 +7,16 @@ namespace NewHorizons.Builder.Atmosphere
{ {
public static void Make(GameObject planetGO, Sector sector, PlanetConfig config) public static void Make(GameObject planetGO, Sector sector, PlanetConfig config)
{ {
GameObject airGO = new GameObject("Air"); var airGO = new GameObject("Air");
airGO.SetActive(false); airGO.SetActive(false);
airGO.layer = 17; airGO.layer = 17;
airGO.transform.parent = sector?.transform ? sector.transform : planetGO.transform; airGO.transform.parent = sector?.transform ? sector.transform : planetGO.transform;
SphereCollider sc = airGO.AddComponent<SphereCollider>(); var sc = airGO.AddComponent<SphereCollider>();
sc.isTrigger = true; sc.isTrigger = true;
sc.radius = config.Atmosphere.size; sc.radius = config.Atmosphere.size;
SimpleFluidVolume sfv = airGO.AddComponent<SimpleFluidVolume>(); var sfv = airGO.AddComponent<SimpleFluidVolume>();
sfv._layer = 5; sfv._layer = 5;
sfv._priority = 1; sfv._priority = 1;
sfv._density = 1.2f; sfv._density = 1.2f;
@ -24,7 +24,11 @@ namespace NewHorizons.Builder.Atmosphere
sfv._allowShipAutoroll = true; sfv._allowShipAutoroll = true;
sfv._disableOnStart = false; sfv._disableOnStart = false;
ShockLayerRuleset shockLayerRuleset = planetGO.GetComponentInChildren<PlanetoidRuleset>().gameObject.AddComponent<ShockLayerRuleset>(); // 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<PlanetoidRuleset>()?.gameObject;
if (ruleSetGO == null) ruleSetGO = planetGO;
var shockLayerRuleset = ruleSetGO.AddComponent<ShockLayerRuleset>();
shockLayerRuleset._type = ShockLayerRuleset.ShockType.Atmospheric; shockLayerRuleset._type = ShockLayerRuleset.ShockType.Atmospheric;
shockLayerRuleset._radialCenter = airGO.transform; shockLayerRuleset._radialCenter = airGO.transform;
shockLayerRuleset._minShockSpeed = config.Atmosphere.minShockSpeed; shockLayerRuleset._minShockSpeed = config.Atmosphere.minShockSpeed;
@ -56,7 +60,7 @@ namespace NewHorizons.Builder.Atmosphere
vref._layer = 0; vref._layer = 0;
vref._priority = 0; vref._priority = 0;
AudioSource AS = airGO.AddComponent<AudioSource>(); var AS = airGO.AddComponent<AudioSource>();
AS.mute = false; AS.mute = false;
AS.bypassEffects = false; AS.bypassEffects = false;
AS.bypassListenerEffects = false; AS.bypassListenerEffects = false;

View File

@ -525,7 +525,8 @@ namespace NewHorizons.Handlers
{ {
var surfaceSize = body.Config.Base.surfaceSize; 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)) if (!string.IsNullOrEmpty(body.Config.Atmosphere?.clouds?.texturePath))
{ {