Beispiel #1
0
    private GameObject GenerateMainTerrain()
    {
        OsmBound       boundData = map.bounds;
        List <Vector3> margin    = new List <Vector3>();

        margin.Add(new Vector3(0 - boundData.size.x / 2, (float)-0.01, 0 - boundData.size.z / 2));
        margin.Add(new Vector3(0 + boundData.size.x / 2, (float)-0.01, 0 - boundData.size.z / 2));
        margin.Add(new Vector3(0 - boundData.size.x / 2, (float)-0.01, 0 + boundData.size.z / 2));
        margin.Add(new Vector3(0 + boundData.size.x / 2, (float)-0.01, 0 + boundData.size.z / 2));

        GameObject go = new GameObject("TerrainMain");

        go.transform.position = new Vector3(0, 0, 0);

        MeshFilter   mf = go.AddComponent <MeshFilter>();
        MeshRenderer mr = go.AddComponent <MeshRenderer>();
        MeshCollider mc = go.AddComponent <MeshCollider>();

        mr.material = cityMaterial;
        mr.material.mainTextureScale = new Vector2(boundData.size.x, boundData.size.z);

        List <Vector3> terVec = margin;
        List <int>     indx   = new List <int> {
            0, 3, 1, 0, 2, 3
        };


        Vector2[] uv = new Vector2[4] {
            new Vector2(1, 1),
            new Vector2(0, 1),
            new Vector2(1, 0),
            new Vector2(0, 0)
        };

        mf.mesh.vertices  = terVec.ToArray();
        mf.mesh.triangles = indx.ToArray();
        mf.mesh.uv        = uv;

        mf.mesh.RecalculateNormals();
        mc.sharedMesh = mf.mesh;
        return(go);
    }
Beispiel #2
0
 void SetBounds(XmlNode xmlNode)
 {
     bounds = new OsmBound(xmlNode);
 }