public void GenerateWaterJSON(string data, GameObject Container, DVector3 PositionMeters) { mc = transform.parent.Find("terrain").GetComponent <MeshCollider>(); TileBoundsMeters = this.transform.parent.GetComponent <MassiveTile>().TileBoundsMeters; Container.layer = LayerMask.NameToLayer("Water"); sData = data; Data = (Dictionary <string, object>)MiniJSON.Json.Deserialize(sData); IList features = (IList)Data["features"]; foreach (IDictionary feature in features) { IDictionary geometry = (IDictionary)feature["geometry"]; string type = (string)geometry["type"]; IDictionary properties = (IDictionary)feature["properties"]; string kind = OSMTools.GetProperty(properties, "kind"); List <List <Vector3> > segments = new List <List <Vector3> >(); /* * if (type == "LineString") * { * List<DVector3> list = new List<DVector3>(); * foreach (IList piece in (IList)geometry["coordinates"]) * { * double dx = (double)piece[0]; * double dz = (double)piece[1]; * DVector3 v = MapFuncs.LatLonToMeters((float)dz, (float)dx); * v -= PositionMeters; * list.Add(v); * } * segments.Add(list); * } */ if (type == "MultiPolygon") { IList segs = (IList)geometry["coordinates"]; foreach (IList part in segs) { segments = OSMTools.CreateMultiPolygon(part, PositionMeters); GenerateGeometry(segments, Container, properties, type); } } if (type == "Polygon") { IList segs = (IList)geometry["coordinates"]; foreach (IList part in segs) { segments = OSMTools.CreatePolygon(part, PositionMeters.ToVector3()); GenerateGeometry(segments, Container, properties, type); } } //Debug.Log(segments); } }
public void Generate(string sData, GameObject Container, DVector3 iPositionMeters) { mc = transform.parent.Find("terrain").GetComponent <MeshCollider>(); Container.layer = LayerMask.NameToLayer("Buildings"); TileBoundsMeters = this.transform.parent.GetComponent <MassiveTile>().TileBoundsMeters; PositionMeters = iPositionMeters; Data = (Dictionary <string, object>)MiniJSON.Json.Deserialize(sData); IList features = (IList)Data["features"]; foreach (IDictionary feature in features) { IDictionary geometry = (IDictionary)feature["geometry"]; string type = (string)geometry["type"]; IDictionary properties = (IDictionary)feature["properties"]; //string kind = OSMTools.GetProperty(properties, "kind"); if (type == "MultiPolygon") { IList segs = (IList)geometry["coordinates"]; foreach (IList segment in segs) { //segments = OSMTools.CreateMultiPolygon(geometry, PositionMeters); List <List <Vector3> > segments = new List <List <Vector3> >(); segments = OSMTools.CreateMultiPolygon(segment, PositionMeters); GenerateGeometry(segments, Container, properties, type); } } if (type == "Polygon") { IList segs = (IList)geometry["coordinates"]; foreach (IList segment in segs) { List <List <Vector3> > segments = new List <List <Vector3> >(); segments = OSMTools.CreatePolygon(segment, PositionMeters.ToVector3()); GenerateGeometry(segments, Container, properties, type); } } //Debug.Log(segments); } }