|
|
|
|
namespace Mapbox.Editor
|
|
|
|
|
{
|
|
|
|
|
using UnityEditor;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using Mapbox.Unity.Map;
|
|
|
|
|
using Mapbox.VectorTile.ExtensionMethods;
|
|
|
|
|
|
|
|
|
|
[CustomPropertyDrawer(typeof(MapExtentOptions))]
|
|
|
|
|
public class MapExtentOptionsDrawer : PropertyDrawer
|
|
|
|
|
{
|
|
|
|
|
static string extTypePropertyName = "extentType";
|
|
|
|
|
static float _lineHeight = EditorGUIUtility.singleLineHeight;
|
|
|
|
|
GUIContent[] extentTypeContent;
|
|
|
|
|
bool isGUIContentSet = false;
|
|
|
|
|
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
|
|
|
|
{
|
|
|
|
|
var kindProperty = property.FindPropertyRelative(extTypePropertyName);
|
|
|
|
|
var displayNames = kindProperty.enumDisplayNames;
|
|
|
|
|
int count = kindProperty.enumDisplayNames.Length;
|
|
|
|
|
if (!isGUIContentSet)
|
|
|
|
|
{
|
|
|
|
|
extentTypeContent = new GUIContent[count];
|
|
|
|
|
for (int extIdx = 0; extIdx < count; extIdx++)
|
|
|
|
|
{
|
|
|
|
|
extentTypeContent[extIdx] = new GUIContent
|
|
|
|
|
{
|
|
|
|
|
text = displayNames[extIdx],
|
|
|
|
|
tooltip = EnumExtensions.Description((MapExtentType)extIdx),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
isGUIContentSet = true;
|
|
|
|
|
}
|
|
|
|
|
// Draw label.
|
|
|
|
|
var extentTypeLabel = new GUIContent
|
|
|
|
|
{
|
|
|
|
|
text = label.text,
|
|
|
|
|
tooltip = "Options to determine the geographic extent of the world for which the map tiles will be requested.",
|
|
|
|
|
};
|
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
|
|
|
kindProperty.enumValueIndex = EditorGUILayout.Popup(extentTypeLabel, kindProperty.enumValueIndex, extentTypeContent, GUILayout.Height(_lineHeight));
|
|
|
|
|
|
|
|
|
|
var kind = (MapExtentType)kindProperty.enumValueIndex;
|
|
|
|
|
if (EditorGUI.EndChangeCheck())
|
|
|
|
|
{
|
|
|
|
|
EditorHelper.CheckForModifiedProperty(property);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EditorGUI.indentLevel++;
|
|
|
|
|
|
|
|
|
|
GUILayout.Space(-_lineHeight);
|
|
|
|
|
SerializedProperty defaultExtentsProp = property.FindPropertyRelative("defaultExtents");
|
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
|
|
|
|
|
|
|
|
switch (kind)
|
|
|
|
|
{
|
|
|
|
|
case MapExtentType.CameraBounds:
|
|
|
|
|
GUILayout.Space(_lineHeight);
|
|
|
|
|
EditorGUILayout.PropertyField(defaultExtentsProp.FindPropertyRelative("cameraBoundsOptions"), new GUIContent { text = "CameraOptions-" });
|
|
|
|
|
break;
|
|
|
|
|
case MapExtentType.RangeAroundCenter:
|
|
|
|
|
EditorGUILayout.PropertyField(defaultExtentsProp.FindPropertyRelative("rangeAroundCenterOptions"), new GUIContent { text = "RangeAroundCenter" });
|
|
|
|
|
break;
|
|
|
|
|
case MapExtentType.RangeAroundTransform:
|
|
|
|
|
GUILayout.Space(_lineHeight);
|
|
|
|
|
EditorGUILayout.PropertyField(defaultExtentsProp.FindPropertyRelative("rangeAroundTransformOptions"), new GUIContent { text = "RangeAroundTransform" });
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if (EditorGUI.EndChangeCheck())
|
|
|
|
|
{
|
|
|
|
|
EditorHelper.CheckForModifiedProperty(defaultExtentsProp);
|
|
|
|
|
}
|
|
|
|
|
EditorGUI.indentLevel--;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|