36 lines
962 B
C#
36 lines
962 B
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
using UnityEngine.Pool;
|
|
|
|
namespace BITKit.OpenWorld
|
|
{
|
|
public sealed class BuildingChunkObject : MonoBehaviour
|
|
{
|
|
[SerializeField] private ChunkBehaviour chunkBehaviour;
|
|
[SerializeField] private Renderer[] interiorRenderers;
|
|
[SerializeField] private Optional<Transform> useRoot;
|
|
private void Start()
|
|
{
|
|
chunkBehaviour.OnLodChangedEvent += OnLodChanged;
|
|
if(useRoot.Allow is false)return;
|
|
var renderers = ListPool<Renderer>.Get();
|
|
renderers.AddRange(interiorRenderers);
|
|
renderers.AddRange(useRoot.Value.GetComponentsInChildren<Renderer>());
|
|
interiorRenderers = renderers.Distinct().ToArray();
|
|
renderers.Clear();
|
|
ListPool<Renderer>.Release(renderers);
|
|
}
|
|
private void OnLodChanged(int oldLod, int newLod)
|
|
{
|
|
var show = newLod is 0;
|
|
foreach (var x in interiorRenderers)
|
|
{
|
|
x.enabled = show;
|
|
}
|
|
}
|
|
}
|
|
}
|