[TASK] Initial commit with basic product setup
This commit is contained in:
234
Assets/Mapbox SDK/Mapbox/Unity/SourceLayers/ImageryLayer.cs
Normal file
234
Assets/Mapbox SDK/Mapbox/Unity/SourceLayers/ImageryLayer.cs
Normal file
@@ -0,0 +1,234 @@
|
||||
namespace Mapbox.Unity.Map
|
||||
{
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using Mapbox.Unity.MeshGeneration.Factories;
|
||||
using Mapbox.Unity.Utilities;
|
||||
|
||||
[Serializable]
|
||||
public class ImageryLayer : AbstractLayer, IImageryLayer
|
||||
{
|
||||
[SerializeField]
|
||||
ImageryLayerProperties _layerProperty = new ImageryLayerProperties();
|
||||
|
||||
[NodeEditorElement("Image Layer")]
|
||||
public ImageryLayerProperties LayerProperty
|
||||
{
|
||||
get
|
||||
{
|
||||
return _layerProperty;
|
||||
}
|
||||
set
|
||||
{
|
||||
_layerProperty = value;
|
||||
}
|
||||
}
|
||||
public MapLayerType LayerType
|
||||
{
|
||||
get
|
||||
{
|
||||
return MapLayerType.Imagery;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsLayerActive
|
||||
{
|
||||
get
|
||||
{
|
||||
return (_layerProperty.sourceType != ImagerySourceType.None);
|
||||
}
|
||||
}
|
||||
|
||||
public string LayerSourceId
|
||||
{
|
||||
get
|
||||
{
|
||||
return _layerProperty.sourceOptions.Id;
|
||||
}
|
||||
internal set
|
||||
{
|
||||
if (value != _layerProperty.sourceOptions.Id)
|
||||
{
|
||||
_layerProperty.sourceOptions.Id = value;
|
||||
_layerProperty.HasChanged = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ImagerySourceType LayerSource
|
||||
{
|
||||
get
|
||||
{
|
||||
return _layerProperty.sourceType;
|
||||
}
|
||||
}
|
||||
|
||||
public ImageryLayer()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public ImageryLayer(ImageryLayerProperties properties)
|
||||
{
|
||||
_layerProperty = properties;
|
||||
}
|
||||
|
||||
|
||||
public void SetLayerSource(string imageSource)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(imageSource))
|
||||
{
|
||||
_layerProperty.sourceType = ImagerySourceType.Custom;
|
||||
_layerProperty.sourceOptions.Id = imageSource;
|
||||
}
|
||||
else
|
||||
{
|
||||
_layerProperty.sourceType = ImagerySourceType.None;
|
||||
Debug.LogWarning("Empty source - turning off imagery. ");
|
||||
}
|
||||
_layerProperty.HasChanged = true;
|
||||
}
|
||||
|
||||
public void SetRasterOptions(ImageryRasterOptions rasterOptions)
|
||||
{
|
||||
_layerProperty.rasterOptions = rasterOptions;
|
||||
_layerProperty.HasChanged = true;
|
||||
}
|
||||
|
||||
public void Initialize(LayerProperties properties)
|
||||
{
|
||||
_layerProperty = (ImageryLayerProperties)properties;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
if (_layerProperty.sourceType != ImagerySourceType.Custom && _layerProperty.sourceType != ImagerySourceType.None)
|
||||
{
|
||||
_layerProperty.sourceOptions.layerSource = MapboxDefaultImagery.GetParameters(_layerProperty.sourceType);
|
||||
}
|
||||
_imageFactory = ScriptableObject.CreateInstance<MapImageFactory>();
|
||||
_imageFactory.SetOptions(_layerProperty);
|
||||
_layerProperty.PropertyHasChanged += RedrawLayer;
|
||||
_layerProperty.rasterOptions.PropertyHasChanged += (property, e) =>
|
||||
{
|
||||
NotifyUpdateLayer(_imageFactory, property as MapboxDataProperty, false);
|
||||
};
|
||||
}
|
||||
|
||||
public void RedrawLayer(object sender, System.EventArgs e)
|
||||
{
|
||||
Factory.SetOptions(_layerProperty);
|
||||
NotifyUpdateLayer(_imageFactory, sender as MapboxDataProperty, false);
|
||||
}
|
||||
|
||||
public void Remove()
|
||||
{
|
||||
_layerProperty = new ImageryLayerProperties
|
||||
{
|
||||
sourceType = ImagerySourceType.None
|
||||
};
|
||||
}
|
||||
|
||||
public void Update(LayerProperties properties)
|
||||
{
|
||||
Initialize(properties);
|
||||
}
|
||||
|
||||
private MapImageFactory _imageFactory;
|
||||
public MapImageFactory Factory
|
||||
{
|
||||
get
|
||||
{
|
||||
return _imageFactory;
|
||||
}
|
||||
}
|
||||
|
||||
#region API Methods
|
||||
|
||||
/// <summary>
|
||||
/// Sets the data source for the image factory.
|
||||
/// </summary>
|
||||
/// <param name="imageSource"></param>
|
||||
public virtual void SetLayerSource(ImagerySourceType imageSource)
|
||||
{
|
||||
if (imageSource != ImagerySourceType.Custom && imageSource != ImagerySourceType.None)
|
||||
{
|
||||
_layerProperty.sourceType = imageSource;
|
||||
_layerProperty.sourceOptions.layerSource = MapboxDefaultImagery.GetParameters(imageSource);
|
||||
_layerProperty.HasChanged = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("Invalid style - trying to set " + imageSource.ToString() + " as default style!");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enables high quality images for selected image factory source.
|
||||
/// </summary>
|
||||
/// <param name="useRetina"></param>
|
||||
public virtual void UseRetina(bool useRetina)
|
||||
{
|
||||
if (_layerProperty.rasterOptions.useRetina != useRetina)
|
||||
{
|
||||
_layerProperty.rasterOptions.useRetina = useRetina;
|
||||
_layerProperty.rasterOptions.HasChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enable Texture2D compression for image factory outputs.
|
||||
/// </summary>
|
||||
/// <param name="useCompression"></param>
|
||||
public virtual void UseCompression(bool useCompression)
|
||||
{
|
||||
if (_layerProperty.rasterOptions.useCompression != useCompression)
|
||||
{
|
||||
_layerProperty.rasterOptions.useCompression = useCompression;
|
||||
_layerProperty.rasterOptions.HasChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enable Texture2D MipMap option for image factory outputs.
|
||||
/// </summary>
|
||||
/// <param name="useMipMap"></param>
|
||||
public virtual void UseMipMap(bool useMipMap)
|
||||
{
|
||||
if (_layerProperty.rasterOptions.useMipMap != useMipMap)
|
||||
{
|
||||
_layerProperty.rasterOptions.useMipMap = useMipMap;
|
||||
_layerProperty.rasterOptions.HasChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Change image layer settings.
|
||||
/// </summary>
|
||||
/// <param name="imageSource">Data source for the image provider.</param>
|
||||
/// <param name="useRetina">Enable/Disable high quality imagery.</param>
|
||||
/// <param name="useCompression">Enable/Disable Unity3d Texture2d image compression.</param>
|
||||
/// <param name="useMipMap">Enable/Disable Unity3d Texture2d image mipmapping.</param>
|
||||
public virtual void SetProperties(ImagerySourceType imageSource, bool useRetina, bool useCompression, bool useMipMap)
|
||||
{
|
||||
if (imageSource != ImagerySourceType.Custom && imageSource != ImagerySourceType.None)
|
||||
{
|
||||
_layerProperty.sourceType = imageSource;
|
||||
_layerProperty.sourceOptions.layerSource = MapboxDefaultImagery.GetParameters(imageSource);
|
||||
_layerProperty.HasChanged = true;
|
||||
}
|
||||
|
||||
if (_layerProperty.rasterOptions.useRetina != useRetina ||
|
||||
_layerProperty.rasterOptions.useCompression != useCompression ||
|
||||
_layerProperty.rasterOptions.useMipMap != useMipMap)
|
||||
{
|
||||
_layerProperty.rasterOptions.useRetina = useRetina;
|
||||
_layerProperty.rasterOptions.useCompression = useCompression;
|
||||
_layerProperty.rasterOptions.useMipMap = useMipMap;
|
||||
_layerProperty.rasterOptions.HasChanged = true;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user