Can't cache cloak stuff because of SectorProxies I guess

This commit is contained in:
Nick 2022-03-20 21:10:58 -04:00
parent 47585783c3
commit 8b4b844ae6
2 changed files with 40 additions and 10 deletions

View File

@ -17,13 +17,28 @@ namespace NewHorizons.Builder.Body
var newCloak = GameObject.Instantiate(cloak, body.transform); var newCloak = GameObject.Instantiate(cloak, body.transform);
newCloak.transform.localPosition = Vector3.zero; newCloak.transform.localPosition = Vector3.zero;
newCloak.SetActive(true); newCloak.transform.name = "CloakingField";
newCloak.transform.localScale = Vector3.one * radius;
GameObject.Destroy(newCloak.GetComponent<PlayerCloakEntryRedirector>());
var cloakFieldController = newCloak.GetComponent<CloakFieldController>();
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>(); var cloakSectorController = newCloak.AddComponent<CloakSectorController>();
cloakSectorController.Init(newCloak.GetComponent<CloakFieldController>(), sector); cloakSectorController.Init(newCloak.GetComponent<CloakFieldController>(), body);
newCloak.SetActive(true);
cloakFieldController.enabled = true;
// To cloak from the start // To cloak from the start
cloakSectorController.OnPlayerExit(); Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(cloakSectorController.OnPlayerExit);
} }
} }
} }

View File

@ -10,14 +10,20 @@ namespace NewHorizons.Components
public class CloakSectorController : MonoBehaviour public class CloakSectorController : MonoBehaviour
{ {
private CloakFieldController _cloak; private CloakFieldController _cloak;
private Sector _sector; private GameObject _root;
private bool _isInitialized; private bool _isInitialized;
public void Init(CloakFieldController cloak, Sector sector) private List<Renderer> _renderers = null;
public void Init(CloakFieldController cloak, GameObject root)
{ {
_cloak = cloak; _cloak = cloak;
_sector = sector; _root = root;
// Lets just clear these off idc
_cloak.OnPlayerEnter = new OWEvent();
_cloak.OnPlayerExit = new OWEvent();
_cloak.OnPlayerEnter += OnPlayerEnter; _cloak.OnPlayerEnter += OnPlayerEnter;
_cloak.OnPlayerExit += OnPlayerExit; _cloak.OnPlayerExit += OnPlayerExit;
@ -34,19 +40,28 @@ namespace NewHorizons.Components
} }
} }
private void SetUpList()
{
_renderers = _root.GetComponentsInChildren<Renderer>().ToList();
}
public void OnPlayerEnter() 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() public void OnPlayerExit()
{ {
foreach (Transform child in _sector.transform) SetUpList();
foreach (var renderer in _renderers)
{ {
child.gameObject.SetActive(false); renderer.forceRenderingOff = true;
} }
} }
} }