Not set to an instance of an object

I keep on getting an error saying that the object is not set to an instance of an object on line 108 of my terrain generator code (cubeCorner = …). Here is my project: https://github.com/AstroneerKing/Terrex.

when you create a thread there are several buttons between title and description,
among those is a “insert code”. It would be wiser if you’d copy/paste certain part of code(or whole script if necessary)
with which you need help. : - )
even in this thread of yours, down below the description you have edit button, so you can paste for now i think the line 108. : - )
but in general, if there would be an null reference error here:

if (Sphere.someComponent == something)
{
        //code
}

then either sphere or sphere’s component Or that something is null. Not set from somewhere

using System;

using System.Collections;

using System.Collections.Generic;

using UnityEngine;


[RequireComponent(typeof(MeshFilter))]

public class TerrainGenerator : MonoBehaviour

{


    float IsoSurfaceLevel = 0f;






    [SerializeField]int wSize;

  

    Density density;

  

    Vector3 vertexPos;



    [SerializeField]bool isBlocky;


    protected int[] WindingOrder { get; private set; }



    List<int> meshTriangles;

  

    int totalNumTris;


    Vector4[] cubeCorners;


    int TraingleLoop = 0;



    List<Vector3> vertices;


    Mesh mesh;

    MeshCollider meshCollider;

    MarchTable table;


    private void Awake() {

        cubeCorners = new Vector4[8];

        meshTriangles = new List<int>();

        totalNumTris = 0;

        vertices = new List<Vector3>();

        density = GetComponent<Density>();

        table = GetComponent<MarchTable>();

        meshCollider = GetComponent<MeshCollider>();

    }


    void Start()

    {

        if(Application.isPlaying)

        {

            generateTerrain();

        }

    }


 


    void generateTerrain()

    {

        if(mesh == null)

        {

            mesh = new Mesh();

            GetComponent<MeshFilter>().mesh = mesh;

        }

        if(meshTriangles != null && vertices != null)

        {

        meshTriangles.Clear();

        vertices.Clear();

        }

        mesh.Clear();

        for (int i = -wSize; i < wSize; i++)

        {

            for (int j = -wSize; j < wSize; j++)

            {

                for (int k = -wSize; k < wSize; k++)

                {

                    if (i+1 >= wSize || j+1 >= wSize || k+1 >= wSize) continue;



                    march(i,j,k);

                }

            }

        }



        if(meshTriangles == null){

            return;

        }

        meshTriangles.Reverse();

        mesh.vertices = vertices.ToArray();

        mesh.SetTriangles(meshTriangles, 0);



        mesh.RecalculateNormals();

        meshCollider.sharedMesh = mesh;

      

    }


    Vector3 interpolateVerts(Vector4 v1, Vector4 v2)

    {



    float t = (IsoSurfaceLevel - v1.w) / (v2.w - v1.w);



    return v1 + t * (v2 - v1);



    }



    void march(int i, int j, int k)

    {



                    cubeCorners = new Vector4[8] {

                  

                    new Vector4 (i, j, k, density.generateDensity(new Vector3 (i, j, k))),


                    new Vector4 (i + 1, j, k, density.generateDensity(new Vector3 (i + 1, j, k))),


                    new Vector4 (i + 1, j, k + 1, density.generateDensity(new Vector3 (i + 1, j, k + 1))),


                    new Vector4 (i, j, k + 1, density.generateDensity(new Vector3 (i, j, k + 1))),


                    new Vector4 (i, j + 1, k, density.generateDensity(new Vector3 (i, j + 1, k))),


                    new Vector4 (i + 1, j + 1, k, density.generateDensity(new Vector3 (i + 1, j + 1, k))),


                    new Vector4 (i + 1, j + 1, k + 1, density.generateDensity(new Vector3 (i + 1, j + 1, k + 1))),


                    new Vector4 (i, j + 1, k + 1, density.generateDensity(new Vector3 (i , j + 1, k + 1))) };

                  



                    int cubeIndex = 0;

                    for (int x = 0; x < 8; x++)

                    {

                        if(cubeCorners[x].w < IsoSurfaceLevel)

                        {

                            cubeIndex |= 1 << x;

                        }

                    }


                    int[] triangulation = table.triangulation[cubeIndex];

                  

                    int h = 0;

                    int numTris = 0;

                    foreach(int edgeIndex in triangulation)

                    {

                      if(edgeIndex == -1)

                      { 

                        numTris = h/3;               

                        break;

                      }

                        h++;

                    }



                  



                    for (int e = 0; e < 5; e++)

                    {


                        if (table.triangulation[cubeIndex][3 * e] < 0) break;


                        for (int v = 0; v < 3; v++)

                        {

                      



                            int idx = vertices.Count;

  

                            int indexA = table.cornerIndexAFromEdge[table.triangulation[cubeIndex][3*e + v]];

                            int indexB = table.cornerIndexBFromEdge[table.triangulation[cubeIndex][3*e + v]];

                            if(isBlocky)

                            {

                                vertexPos = (cubeCorners[indexA] + cubeCorners[indexB])/2;

                            }

                            else

                            {

                            vertexPos = interpolateVerts(cubeCorners[indexA], cubeCorners[indexB]);

                            }



                            meshTriangles.Add(idx);

                            vertices.Add(vertexPos);

                        }



                    }

                  


                    TraingleLoop += numTris;



    }



    public void requestMeshUpdate()

    {

        if(Application.isPlaying)

        {

            generateTerrain();

        }

    }



     void OnDrawGizmos()

    {

      


        if(cubeCorners == null) return;

        if(vertices == null) return;


        // int x = 0;

        // foreach(Vector4 cubecorner in cubeCorners)

        // {

        //     Gizmos.color = Color.Lerp(Color.black, Color.white, cubecorner[x]);



        //     if(x == 5)

        //     {

        //         x = 0;

        //     }

        //     Gizmos.DrawSphere(cubecorner, 0.1f);    

        // }



        foreach(Vector3 vertex in vertices)

        {

            Gizmos.color = Color.blue;

            Gizmos.DrawSphere(vertex, 0.05f);    

        }

    }



    void OnValidate()

    {

        if(Application.isPlaying)

        {

            requestMeshUpdate();

        }

    }



 

}

There is my code… sorry for the trouble.

This is the line where I am getting an error:

 cubeCorners = new Vector4[8] {

                  

                    new Vector4 (i, j, k, density.generateDensity(new Vector3 (i, j, k))),


                    new Vector4 (i + 1, j, k, density.generateDensity(new Vector3 (i + 1, j, k))),


                    new Vector4 (i + 1, j, k + 1, density.generateDensity(new Vector3 (i + 1, j, k + 1))),


                    new Vector4 (i, j, k + 1, density.generateDensity(new Vector3 (i, j, k + 1))),


                    new Vector4 (i, j + 1, k, density.generateDensity(new Vector3 (i, j + 1, k))),


                    new Vector4 (i + 1, j + 1, k, density.generateDensity(new Vector3 (i + 1, j + 1, k))),


                    new Vector4 (i + 1, j + 1, k + 1, density.generateDensity(new Vector3 (i + 1, j + 1, k + 1))),


                    new Vector4 (i, j + 1, k + 1, density.generateDensity(new Vector3 (i , j + 1, k + 1))) };

It looks like the only object that you are referencing in that line is density. Are you sure that

density = GetComponent<Density>();

actually found the component that it was supposed to?