public static Vector3 FindRandomWaypoint(ref ActivePoints activePoints) { Vector3 point = m_instance.m_maxVector; while (point == m_instance.m_maxVector || point == activePoints.m_currentWaypoint) { point = m_instance.m_allWaypoints[(int)Random.Range(0, m_instance.m_allWaypoints.Length)]; } m_instance.UpdateActivePoints(point, ref activePoints); return(point); }
public static Vector3 FindNearestWaypoint(ref ActivePoints activePoints) { Vector3 nearest = m_instance.m_maxVector; for (int i = 0; i < m_instance.m_allWaypoints.Length; ++i) { if ((m_instance.m_allWaypoints[i] - activePoints.m_currentWaypoint).sqrMagnitude <= (nearest - activePoints.m_currentWaypoint).sqrMagnitude && m_instance.m_allWaypoints[i] != activePoints.m_currentWaypoint && m_instance.m_allWaypoints[i] != activePoints.m_previousWaypoint) { nearest = m_instance.m_allWaypoints[i]; } } //Debug.Log("nearest: " + nearest); m_instance.UpdateActivePoints(nearest, ref activePoints); return(nearest); }
private void UpdateActivePoints(Vector3 newPos, ref ActivePoints points) { points.m_previousWaypoint = points.m_currentWaypoint; points.m_currentWaypoint = newPos; }