You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.0 KiB
97 lines
3.0 KiB
namespace Mapbox.Editor
|
|
{
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using Mapbox.Unity.Map;
|
|
using Mapbox.VectorTile.ExtensionMethods;
|
|
|
|
[CustomPropertyDrawer(typeof(ImageryLayerProperties))]
|
|
public class ImageryLayerPropertiesDrawer : PropertyDrawer
|
|
{
|
|
GUIContent[] sourceTypeContent;
|
|
bool isGUIContentSet = false;
|
|
|
|
private GUIContent _tilesetIdGui = new GUIContent
|
|
{
|
|
text = "Tileset Id",
|
|
tooltip = "Id of the tileset."
|
|
};
|
|
|
|
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
|
{
|
|
var sourceTypeProperty = property.FindPropertyRelative("sourceType");
|
|
var sourceTypeValue = (ImagerySourceType)sourceTypeProperty.enumValueIndex;
|
|
|
|
var displayNames = sourceTypeProperty.enumDisplayNames;
|
|
int count = sourceTypeProperty.enumDisplayNames.Length;
|
|
if (!isGUIContentSet)
|
|
{
|
|
sourceTypeContent = new GUIContent[count];
|
|
for (int extIdx = 0; extIdx < count; extIdx++)
|
|
{
|
|
sourceTypeContent[extIdx] = new GUIContent
|
|
{
|
|
text = displayNames[extIdx],
|
|
tooltip = EnumExtensions.Description((ImagerySourceType)extIdx),
|
|
};
|
|
}
|
|
isGUIContentSet = true;
|
|
}
|
|
|
|
// Draw label.
|
|
var sourceTypeLabel = new GUIContent { text = "Data Source", tooltip = "Source tileset for Imagery." };
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
sourceTypeProperty.enumValueIndex = EditorGUILayout.Popup(sourceTypeLabel, sourceTypeProperty.enumValueIndex, sourceTypeContent);
|
|
if(EditorGUI.EndChangeCheck())
|
|
{
|
|
EditorHelper.CheckForModifiedProperty(property);
|
|
}
|
|
sourceTypeValue = (ImagerySourceType)sourceTypeProperty.enumValueIndex;
|
|
|
|
var sourceOptionsProperty = property.FindPropertyRelative("sourceOptions");
|
|
var layerSourceProperty = sourceOptionsProperty.FindPropertyRelative("layerSource");
|
|
var layerSourceId = layerSourceProperty.FindPropertyRelative("Id");
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
|
|
switch (sourceTypeValue)
|
|
{
|
|
case ImagerySourceType.MapboxStreets:
|
|
case ImagerySourceType.MapboxOutdoors:
|
|
case ImagerySourceType.MapboxDark:
|
|
case ImagerySourceType.MapboxLight:
|
|
case ImagerySourceType.MapboxSatellite:
|
|
case ImagerySourceType.MapboxSatelliteStreet:
|
|
var sourcePropertyValue = MapboxDefaultImagery.GetParameters(sourceTypeValue);
|
|
layerSourceId.stringValue = sourcePropertyValue.Id;
|
|
GUI.enabled = false;
|
|
EditorGUILayout.PropertyField(sourceOptionsProperty, _tilesetIdGui);
|
|
GUI.enabled = true;
|
|
break;
|
|
case ImagerySourceType.Custom:
|
|
EditorGUILayout.PropertyField(sourceOptionsProperty, new GUIContent { text = "Tileset Id / Style URL", tooltip = _tilesetIdGui.tooltip });
|
|
break;
|
|
case ImagerySourceType.None:
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
EditorHelper.CheckForModifiedProperty(property);
|
|
}
|
|
|
|
if (sourceTypeValue != ImagerySourceType.None)
|
|
{
|
|
EditorGUI.BeginChangeCheck();
|
|
EditorGUILayout.PropertyField(property.FindPropertyRelative("rasterOptions"));
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
EditorHelper.CheckForModifiedProperty(property);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|