Files
KopMap/Assets/NatureManufacture Assets/WorldStreamer/Scritps/ColliderStreamer/ColliderStreamerManager.cs
2025-09-02 18:55:19 +08:00

92 lines
2.9 KiB
C#

using System;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace WorldStreamer2
{
public class ColliderStreamerManager : MonoBehaviour
{
/// <summary>
/// The player transform.
/// </summary>
[Tooltip("Object that will start loading process after it hits the collider.")]
public Transform player;
/// <summary>
/// Collider Streamer Manager will wait for player spawn and fill it automatically
/// </summary>
[Tooltip("Collider Streamer Manager will wait for player spawn and fill it automatically")]
public bool spawnedPlayer;
[HideInInspector] public string playerTag = "Player";
/// <summary>
/// The tag of collider streamer manager.
/// </summary>
public static string COLLIDERSTREAMERMANAGERTAG = "ColliderStreamerManager";
//[HideInInspector]
/// <summary>
/// The collider streamers.
/// </summary>
public List<ColliderStreamer> colliderStreamers;
/// <summary>
/// Adds the collider streamer.
/// </summary>
/// <param name="colliderStreamer">Collider streamer.</param>
public void AddColliderStreamer(ColliderStreamer colliderStreamer)
{
colliderStreamers.Add(colliderStreamer);
}
/// <summary>
/// Adds the collider scene.
/// </summary>
/// <param name="colliderScene">Collider scene.</param>
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;
}
}
}