Use a component instead of silly delay

This commit is contained in:
Nick 2023-07-16 13:38:33 -04:00
parent 44b6df04d2
commit cffc063269
2 changed files with 30 additions and 14 deletions

View File

@ -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<OWRigidbody>();
}
);
() => Locator._centerOfTheUniverse._staticReferenceFrame = astroObject.GetComponent<OWRigidbody>()
);
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);
});
}
}
}

View File

@ -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<PreserveActiveCenterOfTheUniverse>()._centerOfTheUniverse = center;
}
public void Update()
{
if (!_centerOfTheUniverse.activeInHierarchy)
{
NHLogger.LogWarning("Center of the universe cannot be inactive.");
_centerOfTheUniverse.SetActive(true);
}
}
}
}