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); } }