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.Components.Orbital;
using NewHorizons.External.Configs; using NewHorizons.External.Configs;
using NewHorizons.Utility.OWML; using NewHorizons.Utility.OWML;
@ -60,24 +61,13 @@ namespace NewHorizons.Builder.General
Delay.RunWhen( Delay.RunWhen(
() => Locator._centerOfTheUniverse != null, () => Locator._centerOfTheUniverse != null,
() => { () => Locator._centerOfTheUniverse._staticReferenceFrame = astroObject.GetComponent<OWRigidbody>()
Locator._centerOfTheUniverse._staticReferenceFrame = astroObject.GetComponent<OWRigidbody>(); );
}
);
NeverDeactivateCenterOfTheUniverse(astroObject.gameObject); PreserveActiveCenterOfTheUniverse.Apply(astroObject.gameObject);
} }
return astroObject; 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);
}
}
}
}