MarkerInspector.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System;
  2. using UnityEngine;
  3. using UnityEngine.Timeline;
  4. namespace UnityEditor.Timeline
  5. {
  6. [CustomEditor(typeof(Marker), true)]
  7. [CanEditMultipleObjects]
  8. class MarkerInspector : BasicAssetInspector
  9. {
  10. static class Styles
  11. {
  12. public static readonly string MultipleMarkerSelectionTitle = L10n.Tr("{0} Markers");
  13. public static readonly string UndoCommand = L10n.Tr("Rename marker");
  14. }
  15. internal override bool IsEnabled()
  16. {
  17. if (!TimelineUtility.IsCurrentSequenceValid() || IsCurrentSequenceReadOnly())
  18. return false;
  19. var marker = target as Marker;
  20. if (marker != null)
  21. {
  22. if (!marker.parent.GetShowMarkers())
  23. return false;
  24. }
  25. return base.IsEnabled();
  26. }
  27. internal override void OnHeaderTitleGUI(Rect titleRect, string header)
  28. {
  29. if (targets.Length > 1)
  30. {
  31. var multiSelectTitle = string.Format(Styles.MultipleMarkerSelectionTitle, targets.Length);
  32. base.OnHeaderTitleGUI(titleRect, multiSelectTitle);
  33. return;
  34. }
  35. var marker = target as Marker;
  36. if (marker != null)
  37. {
  38. if (marker.parent.GetShowMarkers() && TimelineUtility.IsCurrentSequenceValid() && !IsCurrentSequenceReadOnly())
  39. {
  40. EditorGUI.BeginChangeCheck();
  41. var newName = EditorGUI.DelayedTextField(titleRect, marker.name);
  42. if (EditorGUI.EndChangeCheck())
  43. {
  44. TimelineUndo.PushUndo(marker, Styles.UndoCommand);
  45. marker.name = newName;
  46. }
  47. }
  48. else
  49. {
  50. base.OnHeaderTitleGUI(titleRect, marker.name);
  51. }
  52. }
  53. else
  54. {
  55. var typeName = TypeUtility.GetDisplayName(target.GetType());
  56. EditorGUILayout.LabelField(typeName);
  57. }
  58. }
  59. static bool IsCurrentSequenceReadOnly()
  60. {
  61. return TimelineWindow.instance.state.editSequence.isReadOnly;
  62. }
  63. }
  64. }