create a unity script procedural sphere earth generator using jobs.

PHOTO EMBED

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