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); }
public BuildingSettings GetSettingsFor(LanduseKind type) { if (type == MapzenGo.Models.Enums.LanduseKind.Unknown) { return(Default); } return(AllSettings.FirstOrDefault(x => x.Type == type) ?? Default); }
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); }
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; }
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); }
public bool HasSettingsFor(LanduseKind type) { return(AllSettings.Any(x => x.Type == type)); }
public LanduseSettings GetSettingsFor(LanduseKind type) { var f = AllSettings.FirstOrDefault(x => x.Type == type); return(f ?? Default); }
public TileBuilding(LanduseKind kind) { Kind = kind; Vertices = new List <Vector3>(); Indices = new List <int>(); }