study/first_study/Library/PackageCache/com.unity.timeline@7f8b2fb101b6/Editor/Signals/SignalEventDrawer.cs
jh04010421 739d49f1a0 Unity | 2026.01.20
수업 실습 파일
2026-01-20 11:01:57 +09:00

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;
}
}
}