124 lines
4.4 KiB
C#
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
|
|
}
|
|
} |