public static TileNode Quantize(Vector3 position, TileGraph tg)
        {
            float    best_dist = 1000f;
            TileNode best_node = null;

            foreach (TileNode tn in tg.Nodes)
            {
                float dist = Mathf.Abs(Vector3.Distance(Localize(tn), position));

                if (dist < best_dist)
                {
                    best_node = tn;
                    best_dist = dist;
                }
            }
            return(best_node);
        }
        // A potential shortcut method which only looks at adjacent nodes to some previous node for quantization
        public static TileNode QuantizeWithPreviousNode(Vector3 position, TileGraph tg, TileNode last_node)
        {
            float       best_dist = 1000f;
            TileNode    best_node = null;
            List <Edge> adj_edges = tg.GetAdjacentEdges(last_node) as List <Edge>;

            foreach (Edge adj_edge in adj_edges)
            {
                TileNode other_node = adj_edge.GetNeighbor(last_node);
                float    dist       = Mathf.Abs(Vector3.Distance(Localize(other_node), position));
                if (dist < best_dist)
                {
                    best_node = other_node;
                }
            }
            return(best_node);
        }