44 lines
951 B
C#
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();
|
|
}
|
|
}
|
|
}
|