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);
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>();
cloakSectorController.Init(newCloak.GetComponent<CloakFieldController>(), sector);
cloakSectorController.Init(newCloak.GetComponent<CloakFieldController>(), body);
newCloak.SetActive(true);
cloakFieldController.enabled = true;
// 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
{
private CloakFieldController _cloak;
private Sector _sector;
private GameObject _root;
private bool _isInitialized;
public void Init(CloakFieldController cloak, Sector sector)
private List<Renderer> _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<Renderer>().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;
}
}
}