From cffc0632694e11669944e368f75113a445f1e581 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 16 Jul 2023 13:38:33 -0400 Subject: [PATCH] Use a component instead of silly delay --- .../Builder/General/AstroObjectBuilder.cs | 18 +++---------- .../PreserveActiveCenterOfTheUniverse.cs | 26 +++++++++++++++++++ 2 files changed, 30 insertions(+), 14 deletions(-) create mode 100644 NewHorizons/Components/PreserveActiveCenterOfTheUniverse.cs diff --git a/NewHorizons/Builder/General/AstroObjectBuilder.cs b/NewHorizons/Builder/General/AstroObjectBuilder.cs index dfa81e3c..8278d056 100644 --- a/NewHorizons/Builder/General/AstroObjectBuilder.cs +++ b/NewHorizons/Builder/General/AstroObjectBuilder.cs @@ -1,3 +1,4 @@ +using NewHorizons.Components; using NewHorizons.Components.Orbital; using NewHorizons.External.Configs; using NewHorizons.Utility.OWML; @@ -60,24 +61,13 @@ namespace NewHorizons.Builder.General Delay.RunWhen( () => Locator._centerOfTheUniverse != null, - () => { - Locator._centerOfTheUniverse._staticReferenceFrame = astroObject.GetComponent(); - } - ); + () => Locator._centerOfTheUniverse._staticReferenceFrame = astroObject.GetComponent() + ); - NeverDeactivateCenterOfTheUniverse(astroObject.gameObject); + PreserveActiveCenterOfTheUniverse.Apply(astroObject.gameObject); } return astroObject; } - - private static void NeverDeactivateCenterOfTheUniverse(GameObject centerOfTheUniverse) - { - NHLogger.LogVerbose("Center of the universe cannot be inactive."); - centerOfTheUniverse.SetActive(true); - Delay.RunWhen(() => !centerOfTheUniverse.activeInHierarchy, () => { - NeverDeactivateCenterOfTheUniverse(centerOfTheUniverse); - }); - } } } diff --git a/NewHorizons/Components/PreserveActiveCenterOfTheUniverse.cs b/NewHorizons/Components/PreserveActiveCenterOfTheUniverse.cs new file mode 100644 index 00000000..0e8cd3c0 --- /dev/null +++ b/NewHorizons/Components/PreserveActiveCenterOfTheUniverse.cs @@ -0,0 +1,26 @@ +using NewHorizons.Utility.OWML; +using UnityEngine; + +namespace NewHorizons.Components +{ + // Prevents the center of the universe being deactivated + public class PreserveActiveCenterOfTheUniverse : MonoBehaviour + { + private GameObject _centerOfTheUniverse; + + public static void Apply(GameObject center) + { + var go = new GameObject(nameof(PreserveActiveCenterOfTheUniverse)); + go.AddComponent()._centerOfTheUniverse = center; + } + + public void Update() + { + if (!_centerOfTheUniverse.activeInHierarchy) + { + NHLogger.LogWarning("Center of the universe cannot be inactive."); + _centerOfTheUniverse.SetActive(true); + } + } + } +}