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);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user