using NewHorizons.Components; using NewHorizons.Utility; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEngine; namespace NewHorizons.Builder.Body { public static class CloakBuilder { public static void Make(GameObject planetGO, Sector sector, OWRigidbody OWRB, float radius) { var cloak = SearchUtilities.Find("RingWorld_Body/CloakingField_IP"); var newCloak = GameObject.Instantiate(cloak, sector?.transform ?? planetGO.transform); newCloak.transform.position = planetGO.transform.position; newCloak.transform.name = "CloakingField"; newCloak.transform.localScale = Vector3.one * radius; GameObject.Destroy(newCloak.GetComponent()); var cloakFieldController = newCloak.GetComponent(); cloakFieldController._cloakScaleDist = radius * 2000 / 3000f; cloakFieldController._farCloakRadius = radius * 500 / 3000f; cloakFieldController._innerCloakRadius = radius * 900 / 3000f; cloakFieldController._nearCloakRadius = radius * 800 / 3000f; cloakFieldController._referenceFrameVolume = OWRB._attachedRFVolume; cloakFieldController._exclusionSector = null; var cloakSectorController = newCloak.AddComponent(); cloakSectorController.Init(newCloak.GetComponent(), planetGO); newCloak.SetActive(true); cloakFieldController.enabled = true; // To cloak from the start Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(cloakSectorController.OnPlayerExit); } } }