45 lines
1.6 KiB
C#
45 lines
1.6 KiB
C#
using Streamingle.Utils.RoughConstraints;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace Streamingle.Utils.RoughConstraintsEditor
|
|
{
|
|
[CustomPropertyDrawer(typeof(Vector3Bool))]
|
|
public sealed class Vector3BoolDrawer : UnityEditor.PropertyDrawer
|
|
{
|
|
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
|
{
|
|
var x = property.FindPropertyRelative("x");
|
|
var y = property.FindPropertyRelative("y");
|
|
var z = property.FindPropertyRelative("z");
|
|
|
|
position = EditorGUI.PrefixLabel(position, label);
|
|
|
|
var previousIndent = EditorGUI.indentLevel;
|
|
EditorGUI.indentLevel = 0;
|
|
|
|
var gap = 4f;
|
|
var width = (position.width - gap * 2f) / 3f;
|
|
DrawToggle(new Rect(position.x, position.y, width, position.height), x, "X");
|
|
DrawToggle(new Rect(position.x + width + gap, position.y, width, position.height), y, "Y");
|
|
DrawToggle(new Rect(position.x + (width + gap) * 2f, position.y, width, position.height), z, "Z");
|
|
|
|
EditorGUI.indentLevel = previousIndent;
|
|
}
|
|
|
|
private static void DrawToggle(Rect rect, SerializedProperty property, string label)
|
|
{
|
|
var enabled = property.boolValue;
|
|
var previousColor = GUI.backgroundColor;
|
|
GUI.backgroundColor = enabled ? new Color(0.55f, 0.82f, 1f) : previousColor;
|
|
|
|
if (GUI.Button(rect, label, EditorStyles.miniButton))
|
|
{
|
|
property.boolValue = !enabled;
|
|
}
|
|
|
|
GUI.backgroundColor = previousColor;
|
|
}
|
|
}
|
|
}
|