using UnityEngine;
namespace Mapbox.Unity.Map
{
public interface ITerrainLayer : ILayer
{
///
/// Gets the `Data Source` for the `TERRAIN` section.
///
ElevationSourceType LayerSource { get; }
///
/// Gets the `Elevation Layer Type` for the `TERRAIN` section.
///
ElevationLayerType ElevationType { get; set; }
///
/// Gets the `Exaggeration Factor` for the `TERRAIN` section.
///
float ExaggerationFactor { get; set; }
///
/// Sets the Data Source for `TERRAIN`. By default this is set to
/// `Mapbox Terrain`. Currenly, only terrain-rgb is supported.
/// Use = `None`, to disable the terrain.
///
/// `Data Source` for `TERRAIN`
void SetLayerSource(ElevationSourceType terrainSource = ElevationSourceType.MapboxTerrain);
///
/// Sets the `Elevation Layer Type` which is the main strategy for terrain
/// mesh generation. `Flat Terrain` doesn't pull data from servers, it
/// uses a quad as the terrain.
/// Type of the elevation. Can be set to `Terrain with Elevation`,
/// `Flat Terrain`, `Globe`, or `Low Polygon Terrain`. Note: low poly doesn't
/// improve performance.
void SetElevationType(ElevationLayerType elevationType);
///
/// Enables or disables the `Add Collider` settings for adding a collider
/// to the terrain. The collider type is a mesh collider.
///
/// Boolean for toggling `Add Collider`.
void EnableCollider(bool enable);
///
/// Sets the `Exaggeration Factor` for the terrain. This acts as a multiplier
/// for elevation. Use this setting to better highlight elevation in your scene.
/// Each elevation point will be multiplied by the float value.
///
/// Elevation multiplier for `Exaggeration Factor` settings.
void SetExaggerationFactor(float factor);
///
/// Enables the settings for `Show Sidewalls`.
///
/// Wall height.
/// Wall material.
void EnableSideWalls(float wallHeight, Material wallMaterial);
///
/// Disables the settings for `Show Sidewalls`.
///
void DisableSideWalls();
///
/// Adds the terrain mesh GameObject to a Unity layer.
///
/// Layer identifier. You may need to add the layer in
/// the Tags and Layers manager.
void AddToUnityLayer(int layerId);
///
/// Removes the terrain GameObject from a Unity layer.
///
/// Layer identifier.
void RemoveFromUnityLayer(int layerId);
///
/// Change the `TERRAIN` layer settings.
///
/// The `Data Source` for the terrain.
/// `Elevation Layer Type` setting to define elevation strategy.
/// Enables or disables `Use Collider` settings for a mesh collider on the terrain.
/// `Exaggertion Factor` for a multiplier of the height data.
/// `Add to Unity Layer` settings which adds terrrain to a layer.
void SetProperties(ElevationSourceType dataSource = ElevationSourceType.MapboxTerrain, ElevationLayerType elevationType = ElevationLayerType.TerrainWithElevation, bool enableCollider = false, float factor = 1, int layerId = 0);
}
public interface IGlobeTerrainLayer : ITerrainLayer
{
float EarthRadius { get; set; }
}
}