Files
2026-03-04 10:03:45 +08:00

65 lines
1.2 KiB
C#

using Unity.Collections;
using UnityEngine;
using UnityEngine.Rendering;
namespace Artngame.SKYMASTER.PlanetCreator
{
public class PlanetChunkObject : MonoBehaviour
{
public PlanetChunkProperties Properties;
public MeshFilter Filter;
public MeshCollider Collider;
public Renderer Renderer;
public bool IsVisible { get; private set; }
public bool IsCalculating { get; private set; }
private void OnDrawGizmos()
{
}
public void SetVisible(bool visible)
{
IsVisible = visible;
if (!visible)
{
Renderer.enabled = false;
}
else if (!IsCalculating)
{
Renderer.enabled = true;
}
}
public void MarkCalculatingVertexData()
{
IsCalculating = true;
}
public void ApplyVertexData(AsyncGPUReadbackRequest request)
{
if (IsVisible)
{
NativeArray<Vector3> data = request.GetData<Vector3>();
Filter.sharedMesh.vertices = data.ToArray();
Filter.sharedMesh.RecalculateBounds();
Renderer.enabled = true;
IsCalculating = false;
}
}
public void ApplyNormalData(AsyncGPUReadbackRequest request)
{
if (IsVisible)
{
NativeArray<Vector3> data = request.GetData<Vector3>();
Filter.sharedMesh.normals = data.ToArray();
}
}
}
}