mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Can't cache cloak stuff because of SectorProxies I guess
This commit is contained in:
parent
47585783c3
commit
8b4b844ae6
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user