1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- using UnityEditor;
- using UnityEngine;
- namespace ARLocation.MapboxRoutes
- {
- [CustomPropertyDrawer(typeof(RouteWaypoint))]
- public class RouteWaypointPropertyDrawer : PropertyDrawer
- {
- private SerializedProperty type;
- private SerializedProperty location;
- private SerializedProperty query;
- public void FindSerializedProperties(SerializedProperty property)
- {
- type = property.FindPropertyRelative("Type");
- location = property.FindPropertyRelative("Location");
- query = property.FindPropertyRelative("Query");
- }
- public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
- {
- FindSerializedProperties(property);
- var lineHeight = EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
- var height = lineHeight;
- if (!property.isExpanded)
- {
- return height;
- }
- height += lineHeight;
- switch (type.enumValueIndex)
- {
- case (int)RouteWaypointType.Location:
- height += EditorGUI.GetPropertyHeight(location);
- break;
- case (int)RouteWaypointType.Query:
- height += lineHeight;
- break;
- case (int)RouteWaypointType.UserLocation:
- break;
- }
- //return base.GetPropertyHeight(property, label);
- return height;
- }
- public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
- {
- FindSerializedProperties(property);
- EditorGUI.BeginProperty(position, label, property);
- var increment = EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
- position.height = EditorGUIUtility.singleLineHeight;
- var indentRect = EditorGUI.IndentedRect(position);
- property.isExpanded = EditorGUI.BeginFoldoutHeaderGroup(indentRect, property.isExpanded, label);
- if (property.isExpanded)
- {
- EditorGUI.indentLevel++;
- position.y += increment;
- EditorGUI.PropertyField(position, type);
- switch (type.enumValueIndex)
- {
- case (int)RouteWaypointType.Location:
- position.y += increment;
- EditorGUI.PropertyField(position, location, true);
- break;
- case (int)RouteWaypointType.Query:
- position.y += increment;
- EditorGUI.PropertyField(position, query);
- break;
- case (int)RouteWaypointType.UserLocation:
- break;
- }
- EditorGUI.indentLevel--;
- }
- EditorGUI.EndFoldoutHeaderGroup();
- EditorGUI.EndProperty();
- }
- }
- }
|