diff --git a/NewHorizons/Builder/Body/CloakBuilder.cs b/NewHorizons/Builder/Body/CloakBuilder.cs index a505f97c..845a9ace 100644 --- a/NewHorizons/Builder/Body/CloakBuilder.cs +++ b/NewHorizons/Builder/Body/CloakBuilder.cs @@ -17,13 +17,28 @@ namespace NewHorizons.Builder.Body var newCloak = GameObject.Instantiate(cloak, body.transform); newCloak.transform.localPosition = Vector3.zero; - newCloak.SetActive(true); + 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 = null; + cloakFieldController._exclusionSector = null; var cloakSectorController = newCloak.AddComponent(); - cloakSectorController.Init(newCloak.GetComponent(), sector); + cloakSectorController.Init(newCloak.GetComponent(), body); + + newCloak.SetActive(true); + cloakFieldController.enabled = true; // To cloak from the start - cloakSectorController.OnPlayerExit(); + Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(cloakSectorController.OnPlayerExit); } } } diff --git a/NewHorizons/Components/CloakSectorController.cs b/NewHorizons/Components/CloakSectorController.cs index 31984ad6..37cfc663 100644 --- a/NewHorizons/Components/CloakSectorController.cs +++ b/NewHorizons/Components/CloakSectorController.cs @@ -10,14 +10,20 @@ namespace NewHorizons.Components public class CloakSectorController : MonoBehaviour { private CloakFieldController _cloak; - private Sector _sector; + private GameObject _root; private bool _isInitialized; - public void Init(CloakFieldController cloak, Sector sector) + private List _renderers = null; + + public void Init(CloakFieldController cloak, GameObject root) { _cloak = cloak; - _sector = sector; + _root = root; + + // Lets just clear these off idc + _cloak.OnPlayerEnter = new OWEvent(); + _cloak.OnPlayerExit = new OWEvent(); _cloak.OnPlayerEnter += OnPlayerEnter; _cloak.OnPlayerExit += OnPlayerExit; @@ -34,19 +40,28 @@ namespace NewHorizons.Components } } + private void SetUpList() + { + _renderers = _root.GetComponentsInChildren().ToList(); + } + public void OnPlayerEnter() { - foreach(Transform child in _sector.transform) + SetUpList(); + + foreach (var renderer in _renderers) { - child.gameObject.SetActive(true); + renderer.forceRenderingOff = false; } } public void OnPlayerExit() { - foreach (Transform child in _sector.transform) + SetUpList(); + + foreach (var renderer in _renderers) { - child.gameObject.SetActive(false); + renderer.forceRenderingOff = true; } } }