private void UpdateNeighbourData(SgtTerrainFace face, ref SgtTerrainNeighbour neighbour)
        {
            if (face.Split == true)
            {
                var childC = face.GetChild(neighbour.C);
                var childD = face.GetChild(neighbour.D);

                childC.BuildIndices();
                childD.BuildIndices();

                UpdateNeighbourData(childC, ref neighbour);
                UpdateNeighbourData(childD, ref neighbour);
            }
        }
        private void UnlinkNeighbours(ref SgtTerrainNeighbour childNeighbour)
        {
            if (childNeighbour.Face.Split == true)
            {
                var childC = childNeighbour.Face.GetChild(childNeighbour.C);
                var childD = childNeighbour.Face.GetChild(childNeighbour.D);

                childC.SetNeighbour(childNeighbour.O, this);
                childD.SetNeighbour(childNeighbour.O, this);

                childC.BuildIndices();
                childD.BuildIndices();
            }
        }
        private void LinkNeighbours(SgtTerrainFace childA, SgtTerrainFace childB, ref SgtTerrainNeighbour childNeighbourA, ref SgtTerrainNeighbour childNeighbourB, ref SgtTerrainNeighbour neighbour)
        {
            if (neighbour.Face.Split == true)
            {
                var neighbourChildC = neighbour.Face.GetChild(neighbour.C);
                var neighbourChildD = neighbour.Face.GetChild(neighbour.D);

                neighbourChildC.SetNeighbour(neighbour.O, childA);
                neighbourChildD.SetNeighbour(neighbour.O, childB);

                childNeighbourA.Set(neighbourChildC, neighbour.I, neighbour.A, neighbour.B, neighbour.O, neighbour.C, neighbour.D, neighbour.Z);
                childNeighbourB.Set(neighbourChildD, neighbour.I, neighbour.A, neighbour.B, neighbour.O, neighbour.C, neighbour.D, neighbour.Z);
            }
            else
            {
                childNeighbourA.Set(neighbour.Face, neighbour.I, neighbour.A, neighbour.B, neighbour.O, neighbour.C, neighbour.D, neighbour.Z);
                childNeighbourB.Set(neighbour.Face, neighbour.I, neighbour.A, neighbour.B, neighbour.O, neighbour.C, neighbour.D, neighbour.Z);
            }
        }