public static Vector3 ProjectOnQuadTangentialToPlanet(Vector3 center, Vector2 point)
        {
            Vector3 a  = default(Vector3);
            Vector3 a2 = default(Vector3);

            WorldRendererUtility.GetTangentsToPlanet(center, out a, out a2, false);
            return(point.x * a + point.y * a2);
        }
        public static void PrintQuadTangentialToPlanet(Vector3 pos, Vector3 posForTangents, float size, float altOffset, LayerSubMesh subMesh, bool counterClockwise = false, bool randomizeRotation = false, bool printUVs = true)
        {
            Vector3 a  = default(Vector3);
            Vector3 a2 = default(Vector3);

            WorldRendererUtility.GetTangentsToPlanet(posForTangents, out a, out a2, randomizeRotation);
            Vector3 normalized = posForTangents.normalized;
            float   d          = (float)(size * 0.5);
            Vector3 item       = pos - a * d - a2 * d + normalized * altOffset;
            Vector3 item2      = pos - a * d + a2 * d + normalized * altOffset;
            Vector3 item3      = pos + a * d + a2 * d + normalized * altOffset;
            Vector3 item4      = pos + a * d - a2 * d + normalized * altOffset;
            int     count      = subMesh.verts.Count;

            subMesh.verts.Add(item);
            subMesh.verts.Add(item2);
            subMesh.verts.Add(item3);
            subMesh.verts.Add(item4);
            if (printUVs)
            {
                subMesh.uvs.Add(new Vector2(0f, 0f));
                subMesh.uvs.Add(new Vector2(0f, 1f));
                subMesh.uvs.Add(new Vector2(1f, 1f));
                subMesh.uvs.Add(new Vector2(1f, 0f));
            }
            if (counterClockwise)
            {
                subMesh.tris.Add(count + 2);
                subMesh.tris.Add(count + 1);
                subMesh.tris.Add(count);
                subMesh.tris.Add(count + 3);
                subMesh.tris.Add(count + 2);
                subMesh.tris.Add(count);
            }
            else
            {
                subMesh.tris.Add(count);
                subMesh.tris.Add(count + 1);
                subMesh.tris.Add(count + 2);
                subMesh.tris.Add(count);
                subMesh.tris.Add(count + 2);
                subMesh.tris.Add(count + 3);
            }
        }