using Mapbox.Unity.Map;
namespace Mapbox.Unity.SourceLayers
{
public interface ISubLayerExtrusionOptions
{
///
/// Disable mesh extrusion for the features in this layer.
///
void DisableExtrusion();
///
/// Sets the height value to be used for Absolute Height extrusion type.
/// Same field is used for the maximum height of Range Extrusion type so beware
/// of possible side effects.
///
/// Fixed height value for all features in the layer.
void SetAbsoluteHeight(float absoluteHeight);
///
/// Change the minimum and maximum height values used for Range Height option.
/// Maximum height is also used for Absolute Height option so beware of possible side
/// effects.
///
/// Lower bound to be used for extrusion
/// Top bound to be used for extrusion
void SetHeightRange(float minHeight, float maxHeight);
///
/// Sets the extrusion multiplier which will be used only in the Y axis (height).
///
/// Multiplier value.
void SetExtrusionMultiplier(float multiplier);
///
/// Changes extrusion type to "Absolute height" and extrudes all features by
/// the given fixed value.
///
/// Option to create top and side polygons after extrusion.
/// Extrusion value
/// Height multiplier
void EnableAbsoluteExtrusion(ExtrusionGeometryType extrusionGeometryType, float height, float extrusionScaleFactor = 1);
///
/// Changes extrusion type to "Property" and extrudes all features by
/// the choosen property's value.
///
/// Option to create top and side polygons after extrusion.
/// Name of the property to use for extrusion
/// Height multiplier
void EnablePropertyExtrusion(ExtrusionGeometryType extrusionGeometryType, string propertyName = "height", float extrusionScaleFactor = 1);
///
/// Changes extrusion type to "Minimum Height" and extrudes all features by
/// the choosen property's value such that all vertices (roof) will be
/// flat at the lowest vertex elevation (after terrain elevation taken into account).
///
/// Option to create top and side polygons after extrusion.
/// Name of the property to use for extrusion
/// Height multiplier
void EnableMinExtrusion(ExtrusionGeometryType extrusionGeometryType, string propertyName = "height", float extrusionScaleFactor = 1);
///
/// Changes extrusion type to "Range Height" and extrudes all features by
/// the choosen property's value such that all vertices (roof) will be
/// flat at the highest vertex elevation (after terrain elevation taken into account).
///
/// Option to create top and side polygons after extrusion.
/// Name of the property to use for extrusion
/// Height multiplier
void EnableMaxExtrusion(ExtrusionGeometryType extrusionGeometryType, string propertyName = "height", float extrusionScaleFactor = 1);
/// ///
/// Changes extrusion type to "Minimum Height" and extrudes all features by
/// the choosen property's value such that they'll be in provided range.
/// Lower values will be increase to Minimum Height and higher values will
/// be lowered to Maximum height.
///
/// Option to create top and side polygons after extrusion.
/// Lower bound to be used for extrusion
/// Top bound to be used for extrusion
/// Height multiplier
void EnableRangeExtrusion(ExtrusionGeometryType extrusionGeometryType, float minHeight, float maxHeight, float extrusionScaleFactor = 1);
}
}