Exemplo n.º 1
0
    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);
        }
    }
Exemplo n.º 2
0
    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);
    }