Fix NullReferenceExceptions

This commit is contained in:
Noah Pilarski 2022-05-29 15:19:19 -04:00
parent 5e1ddde773
commit 661b084f66
7 changed files with 42 additions and 8 deletions

View File

@ -133,11 +133,11 @@ namespace NewHorizons.Builder.Body
// It fucking insists on this existing and its really annoying
var supernovaVolume = new GameObject("SupernovaVolumePlaceholder");
supernovaVolume.transform.SetParent(starGO.transform);
supernova._supernovaVolume = supernovaVolume.AddComponent<SupernovaDestructionVolume>();
var sphere = supernovaVolume.AddComponent<SphereCollider>();
sphere.radius = 0f;
sphere.isTrigger = true;
supernovaVolume.AddComponent<OWCollider>();
supernova._supernovaVolume = supernovaVolume.AddComponent<SupernovaDestructionVolume>();
return starController;
}
@ -148,6 +148,8 @@ namespace NewHorizons.Builder.Body
var supernova = MakeSupernova(starGO, starModule);
supernova._belongsToProxySun = true;
starGO.SetActive(false);
var controller = starGO.AddComponent<StarEvolutionController>();
if (starModule.curve != null) controller.scaleCurve = starModule.GetAnimationCurve();

View File

@ -18,6 +18,7 @@ namespace NewHorizons.Builder.General
spawnGO.transform.localPosition = module.playerSpawnPoint;
playerSpawn = spawnGO.AddComponent<SpawnPoint>();
playerSpawn._triggerVolumes = new OWTriggerVolume[0];
if (module.playerSpawnRotation != null)
{
@ -40,6 +41,7 @@ namespace NewHorizons.Builder.General
var spawnPoint = spawnGO.AddComponent<SpawnPoint>();
spawnPoint._isShipSpawn = true;
spawnPoint._triggerVolumes = new OWTriggerVolume[0];
var ship = GameObject.Find("Ship_Body");
ship.transform.position = spawnPoint.transform.position;
@ -67,6 +69,7 @@ namespace NewHorizons.Builder.General
playerSpawnGO.transform.localPosition = new Vector3(0, 0, 0);
playerSpawn = playerSpawnGO.AddComponent<SpawnPoint>();
playerSpawn._triggerVolumes = new OWTriggerVolume[0];
playerSpawnGO.transform.localRotation = Quaternion.Euler(0, 0, 0);
}
}

View File

@ -169,6 +169,7 @@ namespace NewHorizons.Builder.Props
{
try
{
if (component == null) return;
if (component is Animator animator) animator.enabled = true;
else if (component is Collider collider) collider.enabled = true;
else if (component is Renderer renderer) renderer.enabled = true;

View File

@ -199,8 +199,8 @@ namespace NewHorizons.Components.SizeControllers
supernova.enabled = true;
_isSupernova = true;
_supernovaStartTime = Time.time;
atmosphere.SetActive(false);
_destructionVolume._deathType = DeathType.Supernova;
if (atmosphere != null) atmosphere.SetActive(false);
if (_destructionVolume != null) _destructionVolume._deathType = DeathType.Supernova;
return;
}
}

View File

@ -1,4 +1,4 @@
using HarmonyLib;
using HarmonyLib;
using UnityEngine.SceneManagement;
namespace NewHorizons.Patches
@ -43,5 +43,12 @@ namespace NewHorizons.Patches
return true;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(ReferenceFrameTracker), nameof(ReferenceFrameTracker.UntargetReferenceFrame), new System.Type[] { typeof(bool) })]
public static bool ReferenceFrameTracker_UntargetReferenceFrame(ReferenceFrameTracker __instance, bool playAudio)
{
return __instance._hasTarget && __instance._currentReferenceFrame != null;
}
}
}

View File

@ -1,4 +1,4 @@
using HarmonyLib;
using HarmonyLib;
using Logger = NewHorizons.Utility.Logger;
namespace NewHorizons.Patches
{

View File

@ -1,4 +1,4 @@
using HarmonyLib;
using HarmonyLib;
using UnityEngine;
namespace NewHorizons.Patches
{
@ -40,5 +40,26 @@ namespace NewHorizons.Patches
__instance._audioSource.SetLocalVolume(num * num * __instance._fade);
return false;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(SunProxyEffectController), nameof(SunProxyEffectController.UpdateScales))]
public static bool SunProxyEffectController_UpdateScales(SunProxyEffectController __instance)
{
return __instance != null && __instance._surface != null && __instance._fog != null && __instance._fogMaterial != null && __instance._solarFlareEmitter != null && __instance._atmosphere != null;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(SunProxyEffectController), nameof(SunProxyEffectController.UpdateAtmosphereRadii))]
public static bool SunProxyEffectController_UpdateAtmosphereRadii(SunProxyEffectController __instance)
{
return __instance != null && __instance.transform != null && __instance.transform.parent != null && __instance._atmosphereMaterial != null;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(VanishVolume), nameof(VanishVolume.Shrink))]
public static bool VanishVolume_Shrink(VanishVolume __instance, OWRigidbody bodyToShrink)
{
return __instance != null && __instance.transform != null && __instance._shrinkingBodies != null && __instance._shrinkingBodyLocationData != null && bodyToShrink != null;
}
}
}