コード例 #1
0
ファイル: PFAStarMap.cs プロジェクト: hafewa/Pathfinder
        public void AddAStarNode(PFAStarNode aStarNode)
        {
#if DEBUG
            if (aStarNode.parentLinkedNode != null)
            {
                Debug.Log(string.Format("添加A星节点异常:节点已有父节点"));
                return;
            }
#endif
            aStarNode.parent = this;
            int tiledX = aStarNode.point.x / tiledWidth;
            int tiledY = aStarNode.point.y / tiledHeight;
            LinkedList <PFAStarNode> nodeLinkedList;
            int key = tiledX * algorithm.height + tiledY;
            if (!aStarNodeDictionary.TryGetValue(key, out nodeLinkedList))
            {
                nodeLinkedList = new LinkedList <PFAStarNode>();
                aStarNodeDictionary.Add(key, nodeLinkedList);
            }
            nodeLinkedList.AddLast(aStarNode);
            aStarNode.parentLinkedNode = nodeLinkedList.Last;

            byte resultMask = 0;
            foreach (PFAStarNode tempNode in nodeLinkedList)
            {
                resultMask |= tempNode.mask;
            }
            algorithm.ResetMaskRuntime(new PFPoint(tiledX, tiledY), resultMask);
        }
コード例 #2
0
ファイル: PFAStarMap.cs プロジェクト: hafewa/Pathfinder
        public void RemoveAStarNode(PFAStarNode aStarNode)
        {
#if DEBUG
            if (aStarNode.parentLinkedNode == null)
            {
                Debug.Log(string.Format("添加A星节点异常:节点无有父节点"));
                return;
            }
#endif
            int tiledX = aStarNode.point.x / tiledWidth;
            int tiledY = aStarNode.point.y / tiledHeight;
            int key    = tiledX * algorithm.height + tiledY;
            LinkedList <PFAStarNode> nodeLinkedList = aStarNodeDictionary[key];
            nodeLinkedList.Remove(aStarNode.parentLinkedNode);
            aStarNode.parentLinkedNode = null;

            byte resultMask = 0;
            foreach (PFAStarNode tempNode in nodeLinkedList)
            {
                resultMask |= tempNode.mask;
            }
            algorithm.ResetMaskRuntime(new PFPoint(tiledX, tiledY), resultMask);
        }