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

124 lines
4.4 KiB
C#

using UnityEditor;
using UnityEngine;
namespace Passer.Humanoid {
[CustomEditor(typeof(TriggerEventHandler))]
public class TriggerEventHandler_Editor : Editor {
protected TriggerEventHandler eventHandler;
#region Enable
protected virtual void OnEnable() {
eventHandler = (TriggerEventHandler)target;
InitEvents();
InitControllerInput();
}
#endregion
#region Disable
protected virtual void OnDisable() {
CleanupEvents();
}
#endregion
#region Inspector
public override void OnInspectorGUI() {
serializedObject.Update();
EventsInspector();
ControllerInputInspector(serializedObject.FindProperty("inputEvents"));
serializedObject.ApplyModifiedProperties();
}
#region Events
protected GameObjectEventHandlers[] eventLists;
protected SerializedProperty[] eventListProps;
protected SerializedProperty eventSourcesProp;
protected SerializedProperty triggerEventProp;
protected void InitEvents() {
eventLists = new GameObjectEventHandlers[] {
eventHandler.triggerHandlers,
};
eventListProps = new SerializedProperty[] {
serializedObject.FindProperty("triggerEvents"),
serializedObject.FindProperty("clickEvents"),
};
//eventHandler.eventSources = new GameObjectEventList[] {
// eventHandler.triggerEvents,
//};
//eventSourcesProp = serializedObject.FindProperty("eventSources");
triggerEventProp = serializedObject.FindProperty("triggerHandlers");
}
protected int selectedEvent = -1;
protected void EventsInspector() {
//selectedEvent = GameObjectEvent_Editor.GameObjectEventsInspector(eventLists, eventListProps, selectedEvent);
GameObjectEvent_Editor.EventInspector(triggerEventProp, eventHandler.triggerHandlers, ref selectedEvent, ref selectedSub);
}
protected void CleanupEvents() {
foreach (GameObjectEventHandlers eventList in eventLists)
GameObjectEvent_Editor.Cleanup(eventList);
}
#endregion
#region Controller Input
protected SerializedProperty leftEventsProp;
protected SerializedProperty rightEventsProp;
protected void InitControllerInput() {
leftEventsProp = serializedObject.FindProperty("leftInputEvents");
rightEventsProp = serializedObject.FindProperty("rightInputEvents");
}
protected bool showControllerInput = false;
protected bool showControllerLeft = true;
protected bool showControllerRight = true;
protected GameControllers viewControllerType;
protected int selectedLeft = -1;
protected int selectedRight = -1;
protected int selectedSub = -1;
private void ControllerInputInspector(SerializedProperty inputObj) {
showControllerInput = EditorGUILayout.Foldout(showControllerInput, "Controller Input", true);
if (showControllerInput) {
EditorGUI.indentLevel++;
viewControllerType = (GameControllers)EditorGUILayout.EnumPopup(viewControllerType);
showControllerLeft = EditorGUILayout.Foldout(showControllerLeft, "Left", true);
if (showControllerLeft) {
for (int i = 0; i < leftEventsProp.arraySize; i++) {
ControllerEvent_Editor.EventInspector(
leftEventsProp.GetArrayElementAtIndex(i), /*eventHandler.leftInputEvents[i],*/
ref selectedLeft, ref selectedSub
);
}
}
showControllerRight = EditorGUILayout.Foldout(showControllerRight, "Right", true);
if (showControllerRight) {
for (int i = 0; i < rightEventsProp.arraySize; i++) {
ControllerEvent_Editor.EventInspector(
rightEventsProp.GetArrayElementAtIndex(i), /*eventHandler.rightInputEvents[i],*/
ref selectedRight, ref selectedSub
);
}
}
EditorGUI.indentLevel--;
}
}
#endregion
#endregion
}
}