40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|