コード例 #1
0
ファイル: PathFinder.cs プロジェクト: Sipaha/MateriaTD
    private void AddOpenNode(Node from, IntVec2 newPoint, IntVec2 finish, Plane2D directPath)
    {
        Node node = new Node();
        node.point = newPoint;
        node.steps = from.steps + 1;
        node.from = from;

        float distanceToDirectPath = 0.001f * Mathf.Abs (directPath.distanceTo (newPoint));
        float nodeValue = 100 * (newPoint.SubDistance(finish) + node.steps) + distanceToDirectPath;

        Node replacedNode;

        if (openNodes.Add(node, nodeValue, out replacedNode))
        {
            if (replacedNode != null)
            {
                closedNodes.Add(replacedNode.point);
            }
        }
        else
        {
            closedNodes.Add(node.point);
        }
    }