Initial Commit
This commit is contained in:
parent
53eb92e9af
commit
270ab7d11f
15341 changed files with 700234 additions and 0 deletions
|
@ -0,0 +1,122 @@
|
|||
using System;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
namespace UnityEditor.EventSystems
|
||||
{
|
||||
[CustomEditor(typeof(EventTrigger), true)]
|
||||
public class EventTriggerEditor : Editor
|
||||
{
|
||||
SerializedProperty m_DelegatesProperty;
|
||||
|
||||
GUIContent m_IconToolbarMinus;
|
||||
GUIContent m_EventIDName;
|
||||
GUIContent[] m_EventTypes;
|
||||
GUIContent m_AddButonContent;
|
||||
|
||||
protected virtual void OnEnable()
|
||||
{
|
||||
m_DelegatesProperty = serializedObject.FindProperty("m_Delegates");
|
||||
m_AddButonContent = EditorGUIUtility.TrTextContent("Add New Event Type");
|
||||
m_EventIDName = new GUIContent("");
|
||||
// Have to create a copy since otherwise the tooltip will be overwritten.
|
||||
m_IconToolbarMinus = new GUIContent(EditorGUIUtility.IconContent("Toolbar Minus"));
|
||||
m_IconToolbarMinus.tooltip = "Remove all events in this list.";
|
||||
|
||||
string[] eventNames = Enum.GetNames(typeof(EventTriggerType));
|
||||
m_EventTypes = new GUIContent[eventNames.Length];
|
||||
for (int i = 0; i < eventNames.Length; ++i)
|
||||
{
|
||||
m_EventTypes[i] = new GUIContent(eventNames[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
serializedObject.Update();
|
||||
int toBeRemovedEntry = -1;
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
Vector2 removeButtonSize = GUIStyle.none.CalcSize(m_IconToolbarMinus);
|
||||
|
||||
for (int i = 0; i < m_DelegatesProperty.arraySize; ++i)
|
||||
{
|
||||
SerializedProperty delegateProperty = m_DelegatesProperty.GetArrayElementAtIndex(i);
|
||||
SerializedProperty eventProperty = delegateProperty.FindPropertyRelative("eventID");
|
||||
SerializedProperty callbacksProperty = delegateProperty.FindPropertyRelative("callback");
|
||||
m_EventIDName.text = eventProperty.enumDisplayNames[eventProperty.enumValueIndex];
|
||||
|
||||
EditorGUILayout.PropertyField(callbacksProperty, m_EventIDName);
|
||||
Rect callbackRect = GUILayoutUtility.GetLastRect();
|
||||
|
||||
Rect removeButtonPos = new Rect(callbackRect.xMax - removeButtonSize.x - 8, callbackRect.y + 1, removeButtonSize.x, removeButtonSize.y);
|
||||
if (GUI.Button(removeButtonPos, m_IconToolbarMinus, GUIStyle.none))
|
||||
{
|
||||
toBeRemovedEntry = i;
|
||||
}
|
||||
|
||||
EditorGUILayout.Space();
|
||||
}
|
||||
|
||||
if (toBeRemovedEntry > -1)
|
||||
{
|
||||
RemoveEntry(toBeRemovedEntry);
|
||||
}
|
||||
|
||||
Rect btPosition = GUILayoutUtility.GetRect(m_AddButonContent, GUI.skin.button);
|
||||
const float addButonWidth = 200f;
|
||||
btPosition.x = btPosition.x + (btPosition.width - addButonWidth) / 2;
|
||||
btPosition.width = addButonWidth;
|
||||
if (GUI.Button(btPosition, m_AddButonContent))
|
||||
{
|
||||
ShowAddTriggermenu();
|
||||
}
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
|
||||
private void RemoveEntry(int toBeRemovedEntry)
|
||||
{
|
||||
m_DelegatesProperty.DeleteArrayElementAtIndex(toBeRemovedEntry);
|
||||
}
|
||||
|
||||
void ShowAddTriggermenu()
|
||||
{
|
||||
// Now create the menu, add items and show it
|
||||
GenericMenu menu = new GenericMenu();
|
||||
for (int i = 0; i < m_EventTypes.Length; ++i)
|
||||
{
|
||||
bool active = true;
|
||||
|
||||
// Check if we already have a Entry for the current eventType, if so, disable it
|
||||
for (int p = 0; p < m_DelegatesProperty.arraySize; ++p)
|
||||
{
|
||||
SerializedProperty delegateEntry = m_DelegatesProperty.GetArrayElementAtIndex(p);
|
||||
SerializedProperty eventProperty = delegateEntry.FindPropertyRelative("eventID");
|
||||
if (eventProperty.enumValueIndex == i)
|
||||
{
|
||||
active = false;
|
||||
}
|
||||
}
|
||||
if (active)
|
||||
menu.AddItem(m_EventTypes[i], false, OnAddNewSelected, i);
|
||||
else
|
||||
menu.AddDisabledItem(m_EventTypes[i]);
|
||||
}
|
||||
menu.ShowAsContext();
|
||||
Event.current.Use();
|
||||
}
|
||||
|
||||
private void OnAddNewSelected(object index)
|
||||
{
|
||||
int selected = (int)index;
|
||||
|
||||
m_DelegatesProperty.arraySize += 1;
|
||||
SerializedProperty delegateEntry = m_DelegatesProperty.GetArrayElementAtIndex(m_DelegatesProperty.arraySize - 1);
|
||||
SerializedProperty eventProperty = delegateEntry.FindPropertyRelative("eventID");
|
||||
eventProperty.enumValueIndex = selected;
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue