namespace Mapbox.Unity.Map { using System.Collections.Generic; using Mapbox.Unity.MeshGeneration.Filters; using Mapbox.Unity.MeshGeneration.Modifiers; public static class PresetSubLayerPropertiesFetcher { /// /// Gets the default sub layer properties for the chosen preset type. /// /// The sub layer properties. /// Type. public static VectorSubLayerProperties GetSubLayerProperties(PresetFeatureType type) { //CoreOptions properties VectorPrimitiveType geometryType = VectorPrimitiveType.Polygon; string layerName = "building"; string sublayerName = "Untitled"; //Line Geometry Options float lineWidth = 1.0f; //Geometry Extrusion Options ExtrusionType extrusionType = ExtrusionType.None; ExtrusionGeometryType extrusionGeometryType = ExtrusionGeometryType.RoofAndSide; string propertyName = "height"; float extrusionScaleFactor = 1.0f; float extrusionHeight = 1.0f; //Filter Options LayerFilterCombinerOperationType combinerType = LayerFilterCombinerOperationType.Any; List filters = new List(); // Material Options StyleTypes style = StyleTypes.Realistic; //Misc options bool buildingsWithUniqueIds = true; PositionTargetType positionTargetType = PositionTargetType.TileCenter; //Modifiers List meshModifiers = new List(); List gameObjectModifiers = new List(); ColliderType colliderType = ColliderType.None; switch (type) { case PresetFeatureType.Buildings: layerName = "building"; geometryType = VectorPrimitiveType.Polygon; extrusionType = ExtrusionType.PropertyHeight; extrusionGeometryType = ExtrusionGeometryType.RoofAndSide; propertyName = "height"; style = StyleTypes.Realistic; break; case PresetFeatureType.Roads: layerName = "road"; geometryType = VectorPrimitiveType.Line; lineWidth = 1.0f; style = StyleTypes.Dark; extrusionType = ExtrusionType.AbsoluteHeight; extrusionGeometryType = ExtrusionGeometryType.RoofAndSide; break; case PresetFeatureType.Points: layerName = "poi_label"; geometryType = VectorPrimitiveType.Point; break; case PresetFeatureType.Landuse: layerName = "landuse"; geometryType = VectorPrimitiveType.Polygon; style = StyleTypes.Color; break; case PresetFeatureType.Custom: layerName = ""; geometryType = VectorPrimitiveType.Custom; style = StyleTypes.Custom; break; default: break; } VectorSubLayerProperties _properties = new VectorSubLayerProperties(); _properties.presetFeatureType = type; _properties.coreOptions = new CoreVectorLayerProperties { isActive = true, layerName = layerName, geometryType = geometryType, snapToTerrain = true, combineMeshes = false, sublayerName = sublayerName }; _properties.lineGeometryOptions = new LineGeometryOptions { Width = lineWidth }; _properties.extrusionOptions = new GeometryExtrusionOptions { extrusionType = extrusionType, extrusionGeometryType = extrusionGeometryType, propertyName = propertyName, extrusionScaleFactor = extrusionScaleFactor, maximumHeight = extrusionHeight }; _properties.filterOptions = new VectorFilterOptions { combinerType = combinerType, filters = filters }; _properties.materialOptions = new GeometryMaterialOptions { style = style, colorStyleColor = Constants.GUI.Colors.EDITOR_FEATURE_DEFAULT_COLOR }; _properties.materialOptions.SetDefaultMaterialOptions(); _properties.buildingsWithUniqueIds = buildingsWithUniqueIds; _properties.moveFeaturePositionTo = positionTargetType; _properties.MeshModifiers = meshModifiers; _properties.GoModifiers = gameObjectModifiers; _properties.colliderOptions = new ColliderOptions { colliderType = colliderType }; return _properties; } /// /// Gets the default preset type from supplied layerName. /// /// Layer name. public static PresetFeatureType GetPresetTypeFromLayerName(string layerName) { switch (layerName) { case "building": return PresetFeatureType.Buildings; case "road": return PresetFeatureType.Roads; case "landuse": return PresetFeatureType.Landuse; case "poi_label": return PresetFeatureType.Points; default: return PresetFeatureType.Custom; } } } }