using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.Events; public class AlternateUniverseDynamicEnivornment : MonoBehaviour { [SerializeField] private List GhostUniverseEnvironment; [SerializeField] private List 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)"); } } }