SignalEventDrawer.cs
1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using JetBrains.Annotations;
using UnityEditorInternal;
using UnityEngine;
using UnityEngine.Timeline;
namespace UnityEditor.Timeline.Signals
{
[CustomPropertyDrawer(typeof(CustomSignalEventDrawer))]
[UsedImplicitly]
class SignalEventDrawer : UnityEventDrawer
{
static GameObject FindBoundObject(SerializedProperty property)
{
var component = property.serializedObject.targetObject as Component;
return component != null ? component.gameObject : null;
}
protected override void OnAddEvent(ReorderableList list)
{
base.OnAddEvent(list);
var listProperty = list.serializedProperty;
if (listProperty.arraySize > 0)
{
var lastCall = list.serializedProperty.GetArrayElementAtIndex(listProperty.arraySize - 1);
var targetProperty = lastCall.FindPropertyRelative(kInstancePath);
targetProperty.objectReferenceValue = FindBoundObject(listProperty);
}
}
protected override void DrawEventHeader(Rect headerRect) {}
protected override void SetupReorderableList(ReorderableList list)
{
base.SetupReorderableList(list);
list.headerHeight = 4;
}
}
}