using System; using UnityEngine; using System.Collections; using System.Collections.Generic; namespace WorldStreamer2 { public class ColliderStreamerManager : MonoBehaviour { /// /// The player transform. /// [Tooltip("Object that will start loading process after it hits the collider.")] public Transform player; /// /// Collider Streamer Manager will wait for player spawn and fill it automatically /// [Tooltip("Collider Streamer Manager will wait for player spawn and fill it automatically")] public bool spawnedPlayer; [HideInInspector] public string playerTag = "Player"; /// /// The tag of collider streamer manager. /// public static string COLLIDERSTREAMERMANAGERTAG = "ColliderStreamerManager"; //[HideInInspector] /// /// The collider streamers. /// public List colliderStreamers; /// /// Adds the collider streamer. /// /// Collider streamer. public void AddColliderStreamer(ColliderStreamer colliderStreamer) { colliderStreamers.Add(colliderStreamer); } /// /// Adds the collider scene. /// /// Collider scene. public void AddColliderScene(ColliderScene colliderScene) { //Debug.Log($""); foreach (var item in colliderStreamers) { //Debug.Log($"item {item.name} item: {item.sceneName}, colliderScene: {colliderScene.sceneName} "); if (item == null || item.sceneName != colliderScene.sceneName) continue; //Debug.Log($"state {item.currentState} {item.currentState == ColliderStreamer.State.Loading}"); if (item.CurrentState != ColliderStreamer.State.Loading) continue; //Debug.Log($"found: {item.sceneName}"); item.SetSceneGameObject(colliderScene.gameObject); return; } //Debug.LogError($"Collider Scene {colliderScene.sceneName} not found in Collider Streamers", colliderScene.gameObject); UnloadScene(colliderScene); } private void UnloadScene(ColliderScene colliderScene) { Streamer.loadingManager.UnloadSceneAsync(colliderScene.gameObject.scene); } public void Update() { CheckPlayer(); } private void CheckPlayer() { if (!spawnedPlayer || player != null || string.IsNullOrEmpty(playerTag)) return; var playerGo = GameObject.FindGameObjectWithTag(playerTag); if (playerGo != null) player = playerGo.transform; } } }