1
This commit is contained in:
35
Src/Unity/Scripts/WorldChunk/BuildingChunkObject.cs
Normal file
35
Src/Unity/Scripts/WorldChunk/BuildingChunkObject.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user