private void ShowLanduseElement(LanduseSettings element)
        {
            EditorGUILayout.BeginVertical("box");
            {
                LanduseKind saveKind = element.Type;
                element.Type = (LanduseKind)EditorGUILayout.EnumPopup("Type Landuse:", element.Type);

                if (GUI.changed && saveKind != element.Type)
                {
                    if (UsingType.Contains("lt_" + saveKind.ToString()))
                    {
                        UsingType.Remove("lt_" + saveKind.ToString());
                    }
                    UsingType.Add("lt_" + element.Type.ToString());
                }

                element.Material = (Material)EditorGUILayout.ObjectField("Material", element.Material, typeof(Material));

                if (element.Material == null)
                {
                    DisplayErrorMEssage("Not setting material");
                }
            }
            EditorGUILayout.EndVertical();
        }
    protected LanduseSettings createLanduseSettings(LanduseKind type, string material)
    {
        var ls = new LanduseSettings();

        ls.Type     = type;
        ls.Material = (Material)Resources.Load(material, typeof(Material));
        return(ls);
    }
Exemple #3
0
 public BuildingSettings GetSettingsFor(LanduseKind type)
 {
     if (type == MapzenGo.Models.Enums.LanduseKind.Unknown)
     {
         return(Default);
     }
     return(AllSettings.FirstOrDefault(x => x.Type == type) ?? Default);
 }
Exemple #4
0
        private void CreateGameObject(LanduseKind kind, List <Vector3> vertices, List <int> indices, GameObject main)
        {
            var go   = new GameObject(kind + " Buildings");
            var mesh = go.AddComponent <MeshFilter>().mesh;

            go.AddComponent <MeshRenderer>();
            mesh.vertices  = vertices.ToArray();
            mesh.triangles = indices.ToArray();
            mesh.RecalculateNormals();
            go.GetComponent <MeshRenderer>().material = _settings.GetSettingsFor(kind).Material;
            go.transform.position += Vector3.up * Order;
            go.transform.SetParent(main.transform, true);
        }
Exemple #5
0
 private void SetProperties(JSONObject geo, Landuse landuse, LanduseKind kind)
 {
     landuse.name = "landuse " + geo["properties"]["id"].ToString();
     if (geo["properties"].HasField("name"))
     {
         landuse.Name = geo["properties"]["name"].str;
     }
     landuse.Id      = geo["properties"]["id"].ToString();
     landuse.Type    = geo["type"].str;
     landuse.SortKey = (int)geo["properties"]["sort_key"].f;
     landuse.Kind    = kind;
     landuse.GetComponent <MeshRenderer>().material = _settings.GetSettingsFor(kind).Material;
 }
Exemple #6
0
        private void CreateGameObject(LanduseKind kind, MeshData meshdata, Transform parent)
        {
            var go   = new GameObject(kind + " Landuse");
            var mesh = go.AddComponent <MeshFilter>().mesh;

            go.AddComponent <MeshRenderer>();
            mesh.vertices  = meshdata.Vertices.ToArray();
            mesh.triangles = meshdata.Indices.ToArray();
            mesh.RecalculateNormals();
            go.GetComponent <MeshRenderer>().material = FactorySettings.GetSettingsFor <LanduseSettings>(kind).Material;
            go.transform.position += Vector3.up * Order;
            go.transform.SetParent(parent, true);
        }
        protected override GameObject CreateLayer(Tile tile, List <JSONObject> items)
        {
            var main = new GameObject("Landuse Layer");

            var _meshes = new Dictionary <LanduseKind, MeshData>();

            foreach (var geo in items.Where(x => Query(x)))
            {
                LanduseKind kind = LanduseKind.Unknown;
                if (geo["properties"]["kind"] != null)
                {
                    kind = geo["properties"]["kind"].str.ConvertToLanduseType();
                }
                if (!FactorySettings.HasSettingsFor(kind) && !JustDrawEverythingFam)
                {
                    continue;
                }


                var typeSettings = FactorySettings.GetSettingsFor <LanduseSettings>(kind);
                if (!_meshes.ContainsKey(kind))
                {
                    _meshes.Add(kind, new MeshData());
                }

                //foreach (var bb in geo["geometry"]["coordinates"].list)
                //{
                var bb    = geo["geometry"]["coordinates"].list[0]; //this is wrong but cant fix it now
                var count = bb.list.Count - 1;

                if (count < 3)
                {
                    continue;
                }

                var inp = new InputGeometry(count);

                for (int i = 0; i < count; i++)
                {
                    var c            = bb.list[i];
                    var dotMerc      = GM.LatLonToMeters(c[1].f, c[0].f);
                    var localMercPos = dotMerc - tile.Rect.Center;
                    inp.AddPoint(localMercPos.x, localMercPos.y);
                    inp.AddSegment(i, (i + 1) % count);
                }

                CreateMesh(inp, _meshes[kind]);

                if (_meshes[kind].Vertices.Count > 64000)
                {
                    CreateGameObject(kind, _meshes[kind], main.transform);
                    _meshes[kind] = new MeshData();
                }
            }
            //}


            foreach (var group in _meshes)
            {
                CreateGameObject(group.Key, group.Value, main.transform);
            }

            return(main);
        }
Exemple #8
0
 public bool HasSettingsFor(LanduseKind type)
 {
     return(AllSettings.Any(x => x.Type == type));
 }
Exemple #9
0
            public LanduseSettings GetSettingsFor(LanduseKind type)
            {
                var f = AllSettings.FirstOrDefault(x => x.Type == type);

                return(f ?? Default);
            }
Exemple #10
0
 public TileBuilding(LanduseKind kind)
 {
     Kind     = kind;
     Vertices = new List <Vector3>();
     Indices  = new List <int>();
 }