protected BagBuildingSettings createBuildingSettings(BagFunctionType type, int min, int max, string material) { const int EXAGERATION_FACTOR = 1; var bs = new BagBuildingSettings(); bs.Type = type; bs.Material = (Material)Resources.Load(material, typeof(Material)); bs.MinimumBuildingHeight = EXAGERATION_FACTOR * min; bs.MaximumBuildingHeight = EXAGERATION_FACTOR * max; bs.IsVolumetric = true; return(bs); }
private static void SetProperties(JSONObject geo, Building building, BagBuildingSettings typeSettings) { building.name = "building " + geo["properties"]["id"].ToString(); if (geo["properties"].HasField("name")) { building.Name = geo["properties"]["name"].str; } building.Id = geo["properties"]["id"].ToString(); building.Type = geo["type"].str; building.SortKey = (int)geo["properties"]["sort_key"].f; building.Kind = typeSettings.Type.ToString(); // building.Type = typeSettings.Type.ToString(); building.GetComponent <MeshRenderer>().material = typeSettings.Material; }
private void CreateMesh(List <Vector3> corners, float min_height, float height, BagBuildingSettings typeSettings, MeshData data, Vector2 min, Vector2 size) { var vertsStartCount = _useTriangulationNet ? CreateRoofTriangulation(corners, height, data) : CreateRoofClass(corners, height, data); foreach (var c in corners) { data.UV.Add(new Vector2((c.x - min.x), (c.z - min.y))); } if (typeSettings.IsVolumetric) { float d = 0f; Vector3 v1; Vector3 v2; int ind = 0; //for (int i = corners.Count - 1; i < 1; i--) for (int i = 1; i < corners.Count; i++) { v1 = data.Vertices[vertsStartCount + i - 1]; v2 = data.Vertices[vertsStartCount + i]; ind = data.Vertices.Count; data.Vertices.Add(v1); data.Vertices.Add(v2); data.Vertices.Add(new Vector3(v1.x, min_height, v1.z)); data.Vertices.Add(new Vector3(v2.x, min_height, v2.z)); d = (v2 - v1).magnitude; data.UV.Add(new Vector2(0, 0)); data.UV.Add(new Vector2(d, 0)); data.UV.Add(new Vector2(0, height)); data.UV.Add(new Vector2(d, height)); data.Indices.Add(ind); data.Indices.Add(ind + 2); data.Indices.Add(ind + 1); data.Indices.Add(ind + 1); data.Indices.Add(ind + 2); data.Indices.Add(ind + 3); } v1 = data.Vertices[vertsStartCount]; v2 = data.Vertices[vertsStartCount + corners.Count - 1]; ind = data.Vertices.Count; data.Vertices.Add(v1); data.Vertices.Add(v2); data.Vertices.Add(new Vector3(v1.x, min_height, v1.z)); data.Vertices.Add(new Vector3(v2.x, min_height, v2.z)); d = (v2 - v1).magnitude; data.UV.Add(new Vector2(0, 0)); data.UV.Add(new Vector2(d, 0)); data.UV.Add(new Vector2(0, height)); data.UV.Add(new Vector2(d, height)); data.Indices.Add(ind); data.Indices.Add(ind + 1); data.Indices.Add(ind + 2); data.Indices.Add(ind + 1); data.Indices.Add(ind + 3); data.Indices.Add(ind + 2); } }