create a unity script procedural sphere earth generator using jobs.
Tue Dec 06 2022 18:17:38 GMT+0000 (Coordinated Universal Time)
Saved by
@Ezio727
using UnityEngine;
using Unity.Jobs;
public class SphereEarthGenerator : MonoBehaviour
{
[SerializeField]
public float radius = 1;
public void Generate()
{
// Create job
var job = new GenerateSphereJob
{
radius = this.radius
};
// Setup job handle
var jobHandle = job.Schedule();
// Complete job
jobHandle.Complete();
// Generate sphere
GenerateSphere(job);
}
void GenerateSphere(GenerateSphereJob job)
{
// Create new mesh
Mesh mesh = new Mesh();
// Generate mesh for sphere
mesh.vertices = job.vertices.ToArray();
mesh.triangles = job.triangles.ToArray();
mesh.RecalculateNormals();
mesh.RecalculateBounds();
// Get a reference to the MeshFilter component
MeshFilter filter = GetComponent<MeshFilter>();
// Assign the mesh to the MeshFilter
filter.mesh = mesh;
}
// Job definition
public struct GenerateSphereJob : IJob
{
public float radius;
public List<Vector3> vertices;
public List<int> triangles;
public void Execute()
{
// Generate the vertices
vertices = GenerateVertices();
// Generate the triangles
triangles = GenerateTriangles();
}
List<Vector3> GenerateVertices()
{
List<Vector3> vertices = new List<Vector3>();
// Generate the vertices
// ...
return vertices;
}
List<int> GenerateTriangles()
{
List<int> triangles = new List<int>();
// Generate the triangles
// ...
return triangles;
}
}
}
content_copyCOPY
Comments