FTrackInspector.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using UnityEngine;
  2. using UnityEditor;
  3. using System;
  4. using Flux;
  5. using FluxEditor;
  6. namespace FluxEditor
  7. {
  8. [CustomEditor(typeof(FTrack), true)]
  9. public class FTrackInspector : Editor {
  10. private SerializedProperty _events = null;
  11. private bool _allTracksSameType = true;
  12. private bool _showEvents = true;
  13. public bool ShowEvents { get { return _showEvents; } set { _showEvents = value; } }
  14. public virtual void OnEnable()
  15. {
  16. if( target == null )
  17. return;
  18. FTrack track = (FTrack)target;
  19. Type trackType = track.GetType();
  20. for( int i = 0; i != targets.Length; ++i )
  21. {
  22. if( trackType != targets[i].GetType() )
  23. {
  24. _allTracksSameType = false;
  25. break;
  26. }
  27. }
  28. if( _allTracksSameType )
  29. {
  30. _events = serializedObject.FindProperty("_events");
  31. }
  32. else
  33. _showEvents = false;
  34. }
  35. public override void OnInspectorGUI()
  36. {
  37. if( _allTracksSameType )
  38. base.OnInspectorGUI();
  39. FTrack track = (FTrack)target;
  40. EditorGUI.BeginChangeCheck();
  41. bool enabled = EditorGUILayout.Toggle( "Enabled", ((FTrack)target).enabled );
  42. if( EditorGUI.EndChangeCheck() )
  43. {
  44. Undo.RecordObject( target, (enabled ? "enable" : "disable") + " Track" );
  45. track.enabled = enabled;
  46. EditorUtility.SetDirty( target );
  47. }
  48. EditorGUI.BeginChangeCheck();
  49. string newName = EditorGUILayout.TextField( "Name", target.name );
  50. if( EditorGUI.EndChangeCheck() )
  51. {
  52. Undo.RecordObject( track.gameObject, "rename Track" );
  53. target.name = newName;
  54. EditorUtility.SetDirty( target );
  55. }
  56. if( track.AllowedCacheMode != track.RequiredCacheMode )
  57. {
  58. EditorGUI.BeginChangeCheck();
  59. CacheMode cacheMode = (CacheMode)EditorGUILayout.EnumMaskField( "Cache Mode", track.CacheMode );
  60. if( EditorGUI.EndChangeCheck() )
  61. {
  62. Undo.RecordObject( track, "change Cache Mode" );
  63. track.CacheMode = (cacheMode | track.RequiredCacheMode) & track.AllowedCacheMode;
  64. EditorUtility.SetDirty( target );
  65. }
  66. }
  67. if( _showEvents && _events != null )
  68. {
  69. serializedObject.Update();
  70. EditorGUILayout.PropertyField( _events, true );
  71. serializedObject.ApplyModifiedProperties();
  72. }
  73. }
  74. }
  75. }