mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Make cloak work somewhat
This commit is contained in:
parent
675f033a11
commit
7fd523743a
@ -1,4 +1,5 @@
|
||||
using NewHorizons.Utility;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Utility;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@ -10,22 +11,19 @@ namespace NewHorizons.Builder.Body
|
||||
{
|
||||
static class CloakBuilder
|
||||
{
|
||||
public static void Make(GameObject body, OWRigidbody rigidbody, float radius)
|
||||
public static void Make(GameObject body, Sector sector, float radius)
|
||||
{
|
||||
var cloak = SearchUtilities.Find("RingWorld_Body/CloakingField_IP");
|
||||
|
||||
var newCloak = GameObject.Instantiate(cloak, body.transform);
|
||||
newCloak.transform.localPosition = Vector3.zero;
|
||||
newCloak.SetActive(true);
|
||||
|
||||
// Get all the mesh renders
|
||||
var renderers = new List<Renderer>();
|
||||
|
||||
foreach(var renderer in body.GetComponentsInChildren<Renderer>())
|
||||
{
|
||||
renderers.SafeAdd(renderer);
|
||||
renderer.enabled = false;
|
||||
}
|
||||
var cloakSectorController = newCloak.AddComponent<CloakSectorController>();
|
||||
cloakSectorController.Init(newCloak.GetComponent<CloakFieldController>(), sector);
|
||||
|
||||
// To cloak from the start
|
||||
cloakSectorController.OnPlayerExit();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
53
NewHorizons/Components/CloakSectorController.cs
Normal file
53
NewHorizons/Components/CloakSectorController.cs
Normal file
@ -0,0 +1,53 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NewHorizons.Components
|
||||
{
|
||||
public class CloakSectorController : MonoBehaviour
|
||||
{
|
||||
private CloakFieldController _cloak;
|
||||
private Sector _sector;
|
||||
|
||||
private bool _isInitialized;
|
||||
|
||||
public void Init(CloakFieldController cloak, Sector sector)
|
||||
{
|
||||
_cloak = cloak;
|
||||
_sector = sector;
|
||||
|
||||
_cloak.OnPlayerEnter += OnPlayerEnter;
|
||||
_cloak.OnPlayerExit += OnPlayerExit;
|
||||
|
||||
_isInitialized = true;
|
||||
}
|
||||
|
||||
void OnDestroy()
|
||||
{
|
||||
if(_isInitialized)
|
||||
{
|
||||
_cloak.OnPlayerEnter -= OnPlayerEnter;
|
||||
_cloak.OnPlayerExit -= OnPlayerExit;
|
||||
}
|
||||
}
|
||||
|
||||
public void OnPlayerEnter()
|
||||
{
|
||||
foreach(Transform child in _sector.transform)
|
||||
{
|
||||
child.gameObject.SetActive(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnPlayerExit()
|
||||
{
|
||||
foreach (Transform child in _sector.transform)
|
||||
{
|
||||
child.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -353,7 +353,7 @@ namespace NewHorizons.Handlers
|
||||
|
||||
// Has to go last probably
|
||||
if (body.Config.Base.CloakRadius != 0f)
|
||||
CloakBuilder.Make(go, rb, body.Config.Base.CloakRadius);
|
||||
CloakBuilder.Make(go, sector, body.Config.Base.CloakRadius);
|
||||
|
||||
return go;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user