public PolylineBuilder(MeshData outputMeshData, Options options, Matrix4x4 transform) { this.options = options; var polygonOptions = new PolygonBuilder.Options(); polygonOptions.Material = options.Material; polygonOptions.Extrude = options.Extrude; polygonOptions.MinHeight = options.MinHeight; polygonOptions.MaxHeight = options.MaxHeight; polygonBuilder = new PolygonBuilder(outputMeshData, polygonOptions, transform); polyline = new List <Vector2>(); }
public void Start(List <FeatureStyle> featureStyling, SceneGroup root) { // Parse the GeoJSON // var tileData = new GeoJsonTile(address, response); var tileData = new MvtTile(address, response); // The leaf currently used (will hold the mesh data for the currently matched group) SceneGroup leaf = root; var tileGroup = OnSceneGroupData(SceneGroup.Type.Tile, address.ToString(), root, ref leaf); foreach (var style in featureStyling) { // TODO: group by style? foreach (var filterStyle in style.FilterStyles) { var filterGroup = OnSceneGroupData(SceneGroup.Type.Filter, filterStyle.Name, tileGroup, ref leaf); foreach (var layer in tileData.FeatureCollections) { var layerGroup = OnSceneGroupData(SceneGroup.Type.Layer, layer.Name, filterGroup, ref leaf); foreach (var feature in filterStyle.Filter.Filter(layer)) { var layerStyle = filterStyle.LayerStyles.Find(ls => ls.LayerName == layer.Name); string featureName = ""; object identifier; if (feature.TryGetProperty("id", out identifier)) { featureName += identifier.ToString(); } OnSceneGroupData(SceneGroup.Type.Feature, featureName, layerGroup, ref leaf); if (feature.Type == GeometryType.Polygon || feature.Type == GeometryType.MultiPolygon) { var polygonOptions = layerStyle.GetPolygonOptions(feature, inverseTileScale); if (polygonOptions.Enabled) { var builder = new PolygonBuilder(leaf.meshData, polygonOptions, transform); feature.HandleGeometry(builder); } } if (feature.Type == GeometryType.LineString || feature.Type == GeometryType.MultiLineString) { var polylineOptions = layerStyle.GetPolylineOptions(feature, inverseTileScale); if (polylineOptions.Enabled) { var builder = new PolylineBuilder(leaf.meshData, polylineOptions, transform); feature.HandleGeometry(builder); } } } } } } ready = true; }