/// <summary> /// Gets the walkable successors of the specified node. /// </summary> /// <param name="current">The current node.</param> /// <param name="successorArray">The array to fill with successors.</param> /// <returns> /// All walkable successors of the node. /// </returns> protected override void GetWalkableSuccessors(IPathNode current, DynamicArray <IPathNode> successorArray) { _neighbours.Clear(); if (current.predecessor == null) { current.GetWalkableNeighbours(_neighbours, _unitProps, _cutCorners, false); } else if (current is IPortalNode) { current.GetWalkableNeighbours(successorArray, _unitProps, _cutCorners, false); return; } else { var dirFromPredecessor = current.predecessor.GetDirectionTo(current); PruneNeighbours(current, dirFromPredecessor); } var neighbourCount = _neighbours.count; for (int i = 0; i < neighbourCount; i++) { var n = _neighbours[i]; if (n == null) { break; } var dirToNeighbour = current.GetDirectionTo(n); var jp = Jump(current, dirToNeighbour); if (jp != null) { successorArray.Add(jp); } } }
/// <summary> /// Gets the walkable successors of the specified node. /// </summary> /// <param name="current">The current node.</param> /// <param name="successorArray">The array to fill with successors.</param> /// <returns> /// All walkable successors of the node. /// </returns> protected override void GetWalkableSuccessors(IPathNode current, DynamicArray<IPathNode> successorArray) { _neighbours.Clear(); if (current.predecessor == null) { current.GetWalkableNeighbours(_neighbours, _unitProps, _cutCorners, false); } else if (current is IPortalNode) { current.GetWalkableNeighbours(successorArray, _unitProps, _cutCorners, false); return; } else { var dirFromPredecessor = current.predecessor.GetDirectionTo(current); PruneNeighbours(current, dirFromPredecessor); } var neighbourCount = _neighbours.count; for (int i = 0; i < neighbourCount; i++) { var n = _neighbours[i]; if (n == null) { break; } var dirToNeighbour = current.GetDirectionTo(n); var jp = Jump(current, dirToNeighbour); if (jp != null) { successorArray.Add(jp); } } }