Files
BITFALL/Assets/Plugins/FImpossible Creations/Shared Tools/Editor/Property Drawers/FPD_MiscDrawers.cs

108 lines
4.0 KiB
C#
Raw Normal View History

2023-11-30 00:23:23 +08:00
using UnityEditor;
using UnityEngine;
namespace FIMSpace.FEditor
{
[CustomPropertyDrawer(typeof(FPD_OverridableFloatAttribute))]
public class FPD_OverridableFloat : PropertyDrawer
{
FPD_OverridableFloatAttribute Attribute { get { return ((FPD_OverridableFloatAttribute)base.attribute); } }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
var boolProp = property.serializedObject.FindProperty(Attribute.BoolVarName);
var valProp = property.serializedObject.FindProperty(Attribute.TargetVarName);
Color disabled = new Color(0.8f, 0.8f, 0.8f, 0.6f);
Color preCol = GUI.color;
if (!boolProp.boolValue) GUI.color = disabled; else GUI.color = preCol;
EditorGUI.BeginProperty(position, label, property);
var boolRect = new Rect(position.x, position.y, Attribute.LabelWidth + 15f, position.height);
EditorGUIUtility.labelWidth = Attribute.LabelWidth;
EditorGUI.PrefixLabel(position, label);
EditorGUI.PropertyField(boolRect, boolProp);
EditorGUIUtility.labelWidth = 14;
var valRect = new Rect(position.x + Attribute.LabelWidth + 15, position.y, position.width - (Attribute.LabelWidth + 15), position.height);
EditorGUI.PropertyField(valRect, valProp, new GUIContent(" "));
EditorGUIUtility.labelWidth = 0;
GUI.color = preCol;
EditorGUI.EndProperty();
}
}
// -------------------------- Next F Property Drawer -------------------------- \\
[CustomPropertyDrawer(typeof(BackgroundColorAttribute))]
public class BackgroundColorDecorator : DecoratorDrawer
{
BackgroundColorAttribute Attribute { get { return ((BackgroundColorAttribute)base.attribute); } }
public override float GetHeight() { return 0; }
public override void OnGUI(Rect position)
{
GUI.backgroundColor = Attribute.Color;
}
}
// -------------------------- Next F Property Drawer -------------------------- \\
[CustomPropertyDrawer(typeof(FPD_WidthAttribute))]
public class FPD_Width : PropertyDrawer
{
FPD_WidthAttribute Attribute { get { return ((FPD_WidthAttribute)base.attribute); } }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
EditorGUIUtility.labelWidth = Attribute.LabelWidth;
EditorGUI.PrefixLabel(position, label);
EditorGUI.PropertyField(position, property);
EditorGUIUtility.labelWidth = 0;
}
}
// -------------------------- Next F Property Drawer -------------------------- \\
[CustomPropertyDrawer(typeof(FPD_IndentAttribute))]
public class FPD_Indent : PropertyDrawer
{
FPD_IndentAttribute Attribute { get { return ((FPD_IndentAttribute)base.attribute); } }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
EditorGUIUtility.labelWidth = Attribute.LabelsWidth;
for (int i = 0; i < Attribute.IndentCount; i++) EditorGUI.indentLevel++;
EditorGUI.PrefixLabel(position, label);
EditorGUI.PropertyField(position, property);
for (int i = 0; i < Attribute.IndentCount; i++) EditorGUI.indentLevel--;
EditorGUIUtility.labelWidth = 0;
GUILayout.Space(Attribute.SpaceAfter);
}
}
// -------------------------- Next F Property Drawer -------------------------- \\
[CustomPropertyDrawer(typeof(FPD_HorizontalLineAttribute))]
public class FPD_HorizontalLine : PropertyDrawer
{
FPD_HorizontalLineAttribute Attribute { get { return ((FPD_HorizontalLineAttribute)base.attribute); } }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
FGUI_Inspector.DrawUILine(Attribute.color);
}
}
}