Ejemplo n.º 1
0
        /// <summary>
        /// Adds the open node.新加入node,list的最后一位是f值最小的
        /// </summary>
        /// <param name="node">Node.</param>
        /// <param name="from">From.</param>
        /// <param name="to">To.</param>
        /// <param name="fValueMap">F value map.</param>
        /// <param name="openList">Open list.</param>
        void addOpenNode(string key, CLAStarNode node, CLAStarNode from, CLAStarNode to, ref Dictionary <int, float> fValueMap, ref List <CLAStarNode> openList)
        {
            float fval = distance(node, from) + distance(node, to);

            fValueMap[node.index] = fval;
            int i = openList.Count - 1;

            for (; i >= 0; i--)
            {
                float fval2 = fValueMap[openList[i].index];
                if (fval <= fval2)
                {
                    break;
                }
            }
            //列表最后是F值最小的
            openList.Insert(i + 1, node);
            //设置该点的父节点,以便路径回溯时用
            node.setParentNode(from, key);
        }