private static void sphere_recurse(Vector3 center, float radius, MeshNode node, Queue <KeyValuePair <MeshNode, MeshNode> > splitQueue)
    {
        List <MeshNode> edgesCopy = new List <MeshNode>(node.edges);

        node.visited = true;
        for (int i = 0; i < edgesCopy.Count; i++)
        {
            if (edgesCopy[i].visited == false && node.IsHypotenuse(edgesCopy[i]))
            {
                splitQueue.Enqueue(new KeyValuePair <MeshNode, MeshNode>(node, edgesCopy[i]));
            }
        }

        for (int i = 0; i < edgesCopy.Count; i++)
        {
            if (edgesCopy[i].visited == false)
            {
                sphere_recurse(center, radius, edgesCopy[i], splitQueue);
            }
        }
    }