65 lines
1.2 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|