This repository has been archived on 2025-04-28. You can view files and clone it, but cannot push or open issues or pull requests.
ARPlusSystem/ARPlusSystem-250418/Assets/ARLocation/Editor/OverrideAltitudeDataDrawer.cs

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
}
}
}