88 lines
3.0 KiB
C#
88 lines
3.0 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine.Events;
|
|
|
|
public class AlternateUniverseDynamicEnivornment : MonoBehaviour
|
|
{
|
|
[SerializeField] private List<GameObject> GhostUniverseEnvironment;
|
|
[SerializeField] private List<GameObject> AliveUniverseEnvironment;
|
|
|
|
[Header("Events")]
|
|
[SerializeField] private UnityEvent OnGhostUniverseEnterEvent;
|
|
[SerializeField] private UnityEvent OnAliveUniverseEnterEvent;
|
|
|
|
private void Start()
|
|
{
|
|
if (AlternateUniverseManager.GetInstance() != null)
|
|
{
|
|
AlternateUniverseManager.GetInstance().OnGhostUniverse += GhostUniverseUpdateEnvironment;
|
|
AlternateUniverseManager.GetInstance().OnAliveUniverse += AliveUniverseUpdateEnvironment;
|
|
print("Subscribe (GhostUniverseUpdateEnvironment) ON START");
|
|
print("Subscribe (AliveUniverseUpdateEnvironment) ON START");
|
|
}
|
|
StartCoroutine(LateStart());
|
|
}
|
|
|
|
IEnumerator LateStart()
|
|
{
|
|
yield return new WaitForSeconds(0.5f);
|
|
if (AlternateUniverseManager.GetInstance() != null)
|
|
{
|
|
AlternateUniverseManager.GetInstance().OnGhostUniverse += GhostUniverseUpdateEnvironment;
|
|
AlternateUniverseManager.GetInstance().OnAliveUniverse += AliveUniverseUpdateEnvironment;
|
|
print("Subscribe (GhostUniverseUpdateEnvironment) ON LATE START");
|
|
print("Subscribe (AliveUniverseUpdateEnvironment) ON LATE START");
|
|
}
|
|
}
|
|
|
|
public void GhostUniverseUpdateEnvironment()
|
|
{
|
|
foreach (var GhostUniverseGameObject in GhostUniverseEnvironment)
|
|
{
|
|
GhostUniverseGameObject.SetActive(true);
|
|
}
|
|
if(AliveUniverseEnvironment.Count > 0)
|
|
{
|
|
foreach (var AliveUniverseGameObject in AliveUniverseEnvironment)
|
|
{
|
|
AliveUniverseGameObject.SetActive(false);
|
|
}
|
|
}
|
|
if(OnGhostUniverseEnterEvent != null)
|
|
{
|
|
OnGhostUniverseEnterEvent.Invoke();
|
|
}
|
|
}
|
|
|
|
public void AliveUniverseUpdateEnvironment()
|
|
{
|
|
foreach (var GhostUniverseGameObject in GhostUniverseEnvironment)
|
|
{
|
|
GhostUniverseGameObject.SetActive(false);
|
|
}
|
|
if (AliveUniverseEnvironment.Count > 0)
|
|
{
|
|
foreach (var AliveUniverseGameObject in AliveUniverseEnvironment)
|
|
{
|
|
AliveUniverseGameObject.SetActive(true);
|
|
}
|
|
}
|
|
if (OnAliveUniverseEnterEvent != null)
|
|
{
|
|
OnAliveUniverseEnterEvent.Invoke();
|
|
}
|
|
}
|
|
|
|
void OnDisable()
|
|
{
|
|
if (AlternateUniverseManager.GetInstance() != null)
|
|
{
|
|
AlternateUniverseManager.GetInstance().OnGhostUniverse -= GhostUniverseUpdateEnvironment;
|
|
AlternateUniverseManager.GetInstance().OnAliveUniverse -= AliveUniverseUpdateEnvironment;
|
|
print("Unsubscribe (GhostUniverseUpdateEnvironment)");
|
|
print("Unsubscribe (AliveUniverseUpdateEnvironment)");
|
|
}
|
|
}
|
|
}
|