summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Signals/SignalReceiverInspector.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Signals/SignalReceiverInspector.cs')
-rw-r--r--Library/PackageCache/com.unity.timeline@1.2.13/Editor/Signals/SignalReceiverInspector.cs116
1 files changed, 116 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Signals/SignalReceiverInspector.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Signals/SignalReceiverInspector.cs
new file mode 100644
index 0000000..52211e1
--- /dev/null
+++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Signals/SignalReceiverInspector.cs
@@ -0,0 +1,116 @@
+using UnityEngine;
+using UnityObject = UnityEngine.Object;
+using UnityEditor.IMGUI.Controls;
+using UnityEngine.Events;
+using UnityEngine.Timeline;
+
+namespace UnityEditor.Timeline.Signals
+{
+ [CustomEditor(typeof(SignalReceiver))]
+ class SignalReceiverInspector : Editor
+ {
+ SignalReceiver m_Target;
+
+ [SerializeField] TreeViewState m_TreeState;
+ [SerializeField] MultiColumnHeaderState m_MultiColumnHeaderState;
+ internal SignalReceiverTreeView m_TreeView;
+
+ SignalEmitter signalEmitterContext
+ {
+ get { return m_Context as SignalEmitter;}
+ }
+
+ void OnEnable()
+ {
+ m_Target = target as SignalReceiver;
+ InitTreeView(serializedObject);
+
+ Undo.undoRedoPerformed += OnUndoRedo;
+ }
+
+ void OnDisable()
+ {
+ Undo.undoRedoPerformed -= OnUndoRedo;
+ }
+
+ void OnUndoRedo()
+ {
+ m_TreeView.dirty = true;
+ }
+
+ public override void OnInspectorGUI()
+ {
+ serializedObject.Update();
+
+ using (var changeCheck = new EditorGUI.ChangeCheckScope())
+ {
+ m_TreeView.RefreshIfDirty();
+ DrawEmitterControls(); // Draws buttons coming from the Context (SignalEmitter)
+
+ EditorGUILayout.Space();
+ m_TreeView.Draw();
+
+ if (signalEmitterContext == null)
+ DrawAddRemoveButtons();
+
+ if (changeCheck.changed)
+ {
+ serializedObject.ApplyModifiedProperties();
+ m_TreeView.dirty = true;
+ }
+ }
+ }
+
+ void DrawEmitterControls()
+ {
+ var context = signalEmitterContext;
+ if (context != null)
+ {
+ var currentSignal = context.asset;
+ if (currentSignal != null && !m_Target.IsSignalAssetHandled(currentSignal))
+ {
+ EditorGUILayout.Separator();
+ var message = string.Format(Styles.NoReaction, currentSignal.name);
+ SignalUtility.DrawCenteredMessage(message);
+ if (SignalUtility.DrawCenteredButton(Styles.AddReactionButton))
+ m_Target.AddNewReaction(currentSignal); // Add reaction on the first
+ EditorGUILayout.Separator();
+ }
+ }
+ }
+
+ internal void SetAssetContext(SignalAsset asset)
+ {
+ m_TreeView.SetSignalContext(asset);
+ }
+
+ void DrawAddRemoveButtons()
+ {
+ using (new GUILayout.HorizontalScope())
+ {
+ GUILayout.FlexibleSpace();
+ if (GUILayout.Button(Styles.AddReactionButton))
+ {
+ Undo.RecordObject(m_Target, Styles.UndoAddReaction);
+ m_Target.AddEmptyReaction(new UnityEvent());
+ PrefabUtility.RecordPrefabInstancePropertyModifications(m_Target);
+ }
+ GUILayout.Space(18.0f);
+ }
+ }
+
+ void InitTreeView(SerializedObject so)
+ {
+ m_TreeState = SignalListFactory.CreateViewState();
+ m_MultiColumnHeaderState = SignalListFactory.CreateHeaderState();
+ var header = SignalListFactory.CreateHeader(m_MultiColumnHeaderState, SignalReceiverUtility.headerHeight);
+
+ var context = signalEmitterContext;
+ m_TreeView = SignalListFactory.CreateSignalInspectorList(m_TreeState, header, m_Target, so);
+ m_TreeView.readonlySignals = context != null;
+
+ if (context != null)
+ m_TreeView.SetSignalContext(context.asset);
+ }
+ }
+}