diff --git a/NewHorizons/Builder/Body/CloakBuilder.cs b/NewHorizons/Builder/Body/CloakBuilder.cs index c75fa60c..ffafc769 100644 --- a/NewHorizons/Builder/Body/CloakBuilder.cs +++ b/NewHorizons/Builder/Body/CloakBuilder.cs @@ -5,7 +5,7 @@ namespace NewHorizons.Builder.Body { public static class CloakBuilder { - public static void Make(GameObject planetGO, Sector sector, OWRigidbody OWRB, float radius) + public static void Make(GameObject planetGO, Sector sector, OWRigidbody OWRB, float radius, bool keepReferenceFrame) { var cloak = SearchUtilities.Find("RingWorld_Body/CloakingField_IP"); @@ -36,6 +36,7 @@ namespace NewHorizons.Builder.Body // To cloak from the start Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(cloakSectorController.OnPlayerExit); + Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(keepReferenceFrame ? cloakSectorController.EnableReferenceFrameVolume : cloakSectorController.DisableReferenceFrameVolume); } } } diff --git a/NewHorizons/Components/CloakSectorController.cs b/NewHorizons/Components/CloakSectorController.cs index f027a7dc..9a047ddc 100644 --- a/NewHorizons/Components/CloakSectorController.cs +++ b/NewHorizons/Components/CloakSectorController.cs @@ -76,5 +76,9 @@ namespace NewHorizons.Components Shader.DisableKeyword("_CLOAKINGFIELDENABLED"); _cloak._cloakVisualsEnabled = false; } + + public void SetReferenceFrameVolumeActive(bool active) => _cloak._referenceFrameVolume.gameObject.SetActive(active); + public void EnableReferenceFrameVolume() => SetReferenceFrameVolumeActive(true); + public void DisableReferenceFrameVolume() => SetReferenceFrameVolumeActive(false); } } diff --git a/NewHorizons/Handlers/PlanetCreationHandler.cs b/NewHorizons/Handlers/PlanetCreationHandler.cs index 0234543c..46cbacf4 100644 --- a/NewHorizons/Handlers/PlanetCreationHandler.cs +++ b/NewHorizons/Handlers/PlanetCreationHandler.cs @@ -482,7 +482,7 @@ namespace NewHorizons.Handlers // Has to go last probably if (body.Config.Base.cloakRadius != 0f) { - CloakBuilder.Make(go, sector, rb, body.Config.Base.cloakRadius); + CloakBuilder.Make(go, sector, rb, body.Config.Base.cloakRadius, body.Config.Base.hasReferenceFrame); } return go;