void AddStreetRange(StreetSegment seg, float f0, float f1) { //Debug.Log(string.Format("Adding segment with values {0} {1}", f0, f1)); Vector2 v0 = seg.InterpolateEndpoints(f0); Vector2 v1 = seg.InterpolateEndpoints(f1); GridAddress a0 = new GridAddress(v0); GridAddress a1 = new GridAddress(v1); if (a0 == a1) { //Debug.Log(string.Format("Adding segment at location {0}", a0)); AddStreetAtPoint(seg, v0); } else if ((Mathf.Abs(a0.x - a1.x) <= 1) && (Mathf.Abs(a0.y - a1.y) <= 1)) { //Debug.Log(string.Format("Adding segment at locations {0} and {1}", a0, a1)); AddStreetAtPoint(seg, v0); AddStreetAtPoint(seg, v1); } else { float fh = (f0 + f1) / 2.0f; AddStreetRange(seg, f0, fh); AddStreetRange(seg, fh, f1); } }
public Vector2 GetRandomPointOnStreet() { int streetIndex = Random.Range(0, Streets.Count); StreetSegment seg = Streets[streetIndex]; Vector2 randPos = seg.InterpolateEndpoints(Random.Range(0.0f, 1.0f)); return(randPos); }