public ConnectingWaypoints nextWaypoint(ConnectingWaypoints previousWaypoint) { if (_connections.Count == 0) { Debug.LogError("Insufficient waypoint count."); return(null); } else if (_connections.Count == 1 && _connections.Contains(previousWaypoint)) { return(previousWaypoint); } else { ConnectingWaypoints nextWaypoint; int nextIndex = 0; do { nextIndex = UnityEngine.Random.Range(0, _connections.Count); nextWaypoint = _connections[nextIndex]; } while (nextWaypoint == previousWaypoint); return(nextWaypoint); } }
public void Start() { GameObject[] allWaypoints = GameObject.FindGameObjectsWithTag("Waypoint"); _connections = new List <ConnectingWaypoints>(); for (int i = 0; i < allWaypoints.Length; i++) { ConnectingWaypoints nextWaypoint = allWaypoints[i].GetComponent <ConnectingWaypoints>(); if (nextWaypoint != null) { if (Vector3.Distance(this.transform.position, nextWaypoint.transform.position) <= _connectivityRadius && nextWaypoint != this) { _connections.Add(nextWaypoint); } } } }