BITFALL/Assets/Artists/Scripts/WorldChunk/RuntimeSetActiveService.cs

44 lines
951 B
C#

using System.Collections;
using System.Collections.Generic;
using BITKit;
using BITKit.OpenWorld;
using UnityEngine;
namespace BITFALL.OpenWorld
{
public class RuntimeSetActiveService : MonoBehaviour
{
private readonly List<RuntimeSetActiveChunk> _chunks = new();
private bool isInitialized;
[BIT]
public void Execute()
{
Clear();
foreach (var x in GetComponentsInChildren<Transform>())
{
if (x.gameObject.name.Contains("Cell") is false) continue;
var chunk = x.gameObject.AddComponent<RuntimeSetActiveChunk>();
UnityWorldChunkService.Singleton.Register(chunk);
_chunks.Add(chunk);
chunk.Initialize();
}
if(isInitialized)return;
destroyCancellationToken.Register(Clear);
isInitialized = true;
}
private void Clear()
{
foreach (var chunk in _chunks)
{
UnityWorldChunkService.Singleton.Unregister(chunk);
if (chunk)
Destroy(chunk);
}
_chunks.Clear();
}
}
}