You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
4.2 KiB
C#
157 lines
4.2 KiB
C#
2 months ago
|
using System;
|
||
|
using AV.Inspector.Runtime;
|
||
|
using D2D.Core;
|
||
|
using DG.DemiEditor;
|
||
|
using UnityEditor;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.UIElements;
|
||
|
using static AV.Inspector.Runtime.SmartInspector;
|
||
|
|
||
|
namespace D2D.Utilities
|
||
|
{
|
||
|
public class SuperEditor : Editor
|
||
|
{
|
||
|
public void SetVector(string boolName, Vector3 v)
|
||
|
{
|
||
|
var p = serializedObject.FindProperty(boolName);
|
||
|
p.vector3Value = v;
|
||
|
serializedObject.ApplyModifiedProperties();
|
||
|
}
|
||
|
|
||
|
public Vector3 GetVector(string boolName)
|
||
|
{
|
||
|
var p = serializedObject.FindProperty(boolName);
|
||
|
return p.vector3Value;
|
||
|
}
|
||
|
|
||
|
public void FlipBool(string boolName)
|
||
|
{
|
||
|
var p = serializedObject.FindProperty(boolName);
|
||
|
p.boolValue = !p.boolValue;
|
||
|
serializedObject.ApplyModifiedProperties();
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
public bool GetBool(string boolName)
|
||
|
{
|
||
|
var p = serializedObject.FindProperty(boolName);
|
||
|
return p.boolValue;
|
||
|
}
|
||
|
|
||
|
public void InvertInt(string boolName)
|
||
|
{
|
||
|
var p = serializedObject.FindProperty(boolName);
|
||
|
p.intValue = p.intValue == 1 ? -1 : 1;
|
||
|
serializedObject.ApplyModifiedProperties();
|
||
|
}
|
||
|
|
||
|
public void PlusEnum(string enumName, int capacity)
|
||
|
{
|
||
|
var playMode = serializedObject.FindProperty(enumName);
|
||
|
|
||
|
if (playMode.enumValueIndex >= capacity-1)
|
||
|
playMode.enumValueIndex = 0;
|
||
|
else
|
||
|
{
|
||
|
playMode.enumValueIndex++;
|
||
|
}
|
||
|
|
||
|
serializedObject.ApplyModifiedProperties();
|
||
|
}
|
||
|
|
||
|
#region Begin-Ends
|
||
|
|
||
|
protected void BeginSerialization()
|
||
|
{
|
||
|
serializedObject.Update();
|
||
|
}
|
||
|
|
||
|
protected void EndSerialization()
|
||
|
{
|
||
|
serializedObject.ApplyModifiedProperties();
|
||
|
}
|
||
|
|
||
|
protected void BeginReadOnly()
|
||
|
{
|
||
|
EditorGUI.BeginDisabledGroup(true);
|
||
|
}
|
||
|
|
||
|
protected void ReadOnlyLine(string description, string value)
|
||
|
{
|
||
|
BeginReadOnly();
|
||
|
EditorGUILayout.TextField(description, value);
|
||
|
EndReadOnly();
|
||
|
}
|
||
|
|
||
|
protected void ReadOnlyLine(string description)
|
||
|
{
|
||
|
BeginReadOnly();
|
||
|
ShowProperty(description);
|
||
|
EndReadOnly();
|
||
|
}
|
||
|
|
||
|
protected void EndReadOnly()
|
||
|
{
|
||
|
EditorGUI.EndDisabledGroup();
|
||
|
}
|
||
|
|
||
|
protected void BeginHorizontal()
|
||
|
{
|
||
|
GUILayout.BeginHorizontal("box");
|
||
|
}
|
||
|
|
||
|
protected void EndHorizontal()
|
||
|
{
|
||
|
GUILayout.EndHorizontal();
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region Elements
|
||
|
|
||
|
protected bool Button(string buttonName)
|
||
|
{
|
||
|
return GUILayout.Button(buttonName);
|
||
|
}
|
||
|
|
||
|
protected bool StateButton(string buttonName, string checkBool)
|
||
|
{
|
||
|
var c = GetBool(checkBool) ? Color.green : Color.red;
|
||
|
GUI.backgroundColor = c;
|
||
|
var isClicked = GUILayout.Button(buttonName);
|
||
|
GUI.backgroundColor = Color.white;
|
||
|
return isClicked;
|
||
|
}
|
||
|
|
||
|
protected bool Button(Texture texture, int size = 20)
|
||
|
{
|
||
|
return GUILayout.Button(texture, GUILayout.Width(size * 1.5f), GUILayout.Height(size));
|
||
|
}
|
||
|
|
||
|
protected void Space(float size = 6f)
|
||
|
{
|
||
|
EditorGUILayout.Space(size);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
protected void ShowProperty(string propertyName, string text="", int maxWidth = -1)
|
||
|
{
|
||
|
var property = serializedObject.FindProperty(propertyName);
|
||
|
|
||
|
if (text == "")
|
||
|
{
|
||
|
text = propertyName.Replace('_', ' ').Trim();
|
||
|
text = (text[0].ToString().ToUpper() + text.Remove(0, 1));
|
||
|
}
|
||
|
|
||
|
if (maxWidth != -1)
|
||
|
EditorGUILayout.PropertyField(property, new GUIContent(text), GUILayout.MaxWidth(maxWidth));
|
||
|
else
|
||
|
EditorGUILayout.PropertyField(property, new GUIContent(text));
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
}
|
||
|
}
|