HumanoidControl_Free/Editor/Tools/Counter_Editor.cs
Pascal Serrarens 17741d862a First commit
2022-01-12 10:50:57 +01:00

111 lines
3.3 KiB
C#

using UnityEngine;
using UnityEditor;
namespace Passer {
[CustomEditor(typeof(Counter), true)]
public class Counter_Editor : Editor {
protected Counter counter;
#region Enable
protected virtual void OnEnable() {
counter = (Counter)target;
}
#endregion Enable
#region Inspector
public override void OnInspectorGUI() {
serializedObject.Update();
ValueInspector();
MinInspector();
MaxInspector();
TimerInspector();
NetworkingInspector();
EventsInspector(counter);
if (Application.isPlaying)
Buttons();
serializedObject.ApplyModifiedProperties();
}
protected void ValueInspector() {
SerializedProperty valueProp = serializedObject.FindProperty("_value");
valueProp.intValue = EditorGUILayout.IntField("Value", valueProp.intValue);
}
protected void MinInspector() {
SerializedProperty minProp = serializedObject.FindProperty("min");
minProp.intValue = EditorGUILayout.IntField("Minimum", minProp.intValue);
}
protected void MaxInspector() {
SerializedProperty maxProp = serializedObject.FindProperty("max");
maxProp.intValue = EditorGUILayout.IntField("Maximum", maxProp.intValue);
}
protected void TimerInspector() {
SerializedProperty timerProp = serializedObject.FindProperty("timer");
timerProp.floatValue = EditorGUILayout.FloatField("Timer", timerProp.floatValue);
}
protected virtual void NetworkingInspector() {
#if hNW_PHOTON
SerializedProperty networkingProp = serializedObject.FindProperty(nameof(Counter.networking));
networkingProp.boolValue = EditorGUILayout.Toggle("Network Sync", networkingProp.boolValue);
if (networkingProp.boolValue) {
Photon.Pun.PhotonView photonView = counter.GetComponent<Photon.Pun.PhotonView>();
if (photonView == null) {
counter.gameObject.AddComponent<Photon.Pun.PhotonView>();
}
}
#endif
}
protected virtual void Buttons() {
EditorGUILayout.BeginHorizontal();
DecrementButton();
IncrementButton();
EditorGUILayout.EndHorizontal();
}
protected virtual void DecrementButton() {
if (GUILayout.Button("Decrement"))
counter.Decrement();
}
protected virtual void IncrementButton() {
if (GUILayout.Button("Increment"))
counter.Increment();
}
#endregion Inspector
#region Events
protected bool showEvents;
protected int selectedEventSource = -1;
protected int selectedEvent;
protected virtual void EventsInspector(Counter counter) {
showEvents = EditorGUILayout.Foldout(showEvents, "Events", true);
if (showEvents) {
EditorGUI.indentLevel++;
SerializedProperty counterEventProp = serializedObject.FindProperty("counterEvent");
IntEvent_Editor.EventInspector(counterEventProp, counter.counterEvent, ref selectedEventSource, ref selectedEvent);
}
}
#endregion
}
}