68 lines
2.6 KiB
C#
68 lines
2.6 KiB
C#
|
|
using UnityEngine;
|
||
|
|
using UnityEditor;
|
||
|
|
|
||
|
|
namespace ARLocation
|
||
|
|
{
|
||
|
|
[CustomPropertyDrawer(typeof(OverrideAltitudeData))]
|
||
|
|
public class OverrideAltitudeDataDrawer : PropertyDrawer
|
||
|
|
{
|
||
|
|
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
||
|
|
{
|
||
|
|
EditorGUI.BeginProperty(position, label, property);
|
||
|
|
|
||
|
|
var initialRect = EditorGUI.IndentedRect(position); //position;
|
||
|
|
|
||
|
|
position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label);
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
var indent = EditorGUI.indentLevel;
|
||
|
|
EditorGUI.indentLevel = 0;
|
||
|
|
// EditorGUI.IndentedRect(position);
|
||
|
|
|
||
|
|
float height = 20.0f;
|
||
|
|
|
||
|
|
var boolRect = new Rect(position.x, position.y, 30, height);
|
||
|
|
var altitudeRect = new Rect(position.x, position.y + 20, 180, height);
|
||
|
|
var altitudeLabelRect = new Rect(initialRect.x, position.y + height, 50, height);
|
||
|
|
|
||
|
|
var altitudeModeRect = new Rect(position.x, position.y + (2 * height), 180, height);
|
||
|
|
var altitudeModeLabelRect = new Rect(initialRect.x, position.y + (2 * height), 50, height);
|
||
|
|
|
||
|
|
EditorGUI.PropertyField(boolRect, property.FindPropertyRelative("OverrideAltitude"), GUIContent.none);
|
||
|
|
|
||
|
|
if (property.FindPropertyRelative("OverrideAltitude").boolValue)
|
||
|
|
{
|
||
|
|
var x = new GUIContent();
|
||
|
|
var y = new GUIContent();
|
||
|
|
x.text = "Altitude";
|
||
|
|
EditorGUI.PrefixLabel(altitudeLabelRect, x);
|
||
|
|
// EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label);
|
||
|
|
EditorGUI.PropertyField(altitudeRect, property.FindPropertyRelative("Altitude"), GUIContent.none);
|
||
|
|
|
||
|
|
y.text = "Altitude Mode";
|
||
|
|
EditorGUI.PrefixLabel(altitudeModeLabelRect, y);
|
||
|
|
EditorGUI.PropertyField(altitudeModeRect, property.FindPropertyRelative("AltitudeMode"), GUIContent.none);
|
||
|
|
}
|
||
|
|
|
||
|
|
EditorGUI.indentLevel = indent;
|
||
|
|
|
||
|
|
EditorGUI.EndProperty();
|
||
|
|
}
|
||
|
|
|
||
|
|
public override float GetPropertyHeight(SerializedProperty property,
|
||
|
|
GUIContent label)
|
||
|
|
{
|
||
|
|
if (property.FindPropertyRelative("OverrideAltitude").boolValue)
|
||
|
|
{
|
||
|
|
return base.GetPropertyHeight(property, label) * 2 + 20;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
return base.GetPropertyHeight(property, label); // * 2 + 20;
|
||
|
|
}
|
||
|
|
// Height is two times the standard height plus 20 pixels
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|