FPlayAudioEventInspector.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using UnityEngine;
  2. using UnityEditor;
  3. using Flux;
  4. namespace FluxEditor
  5. {
  6. [CustomEditor(typeof(FPlayAudioEvent))]
  7. public class FPlayAudioEventInspector : FEventInspector {
  8. private FPlayAudioEvent _audioEvt = null;
  9. private SerializedProperty _startOffset = null;
  10. protected override void OnEnable ()
  11. {
  12. base.OnEnable();
  13. _audioEvt = (FPlayAudioEvent)target;
  14. _startOffset = serializedObject.FindProperty("_startOffset");
  15. }
  16. public override void OnInspectorGUI ()
  17. {
  18. AudioClip currentClip = _audioEvt.AudioClip;
  19. base.OnInspectorGUI();
  20. if( currentClip != _audioEvt.AudioClip && _audioEvt.AudioClip != null && !_audioEvt.Loop )
  21. {
  22. if( _audioEvt.LengthTime > _audioEvt.AudioClip.length )
  23. {
  24. Undo.RecordObject( _audioEvt, null );
  25. _audioEvt.Length = Mathf.RoundToInt( _audioEvt.AudioClip.length * _audioEvt.Sequence.FrameRate );
  26. FSequenceEditorWindow.RefreshIfOpen();
  27. }
  28. }
  29. serializedObject.Update();
  30. _startOffset.intValue = Mathf.Clamp( _startOffset.intValue, 0, _audioEvt.GetMaxStartOffset() );
  31. EditorGUI.BeginChangeCheck();
  32. EditorGUILayout.IntSlider( _startOffset, 0, _audioEvt.GetMaxStartOffset() );
  33. if( EditorGUI.EndChangeCheck() )
  34. {
  35. if( FSequenceEditorWindow.instance != null )
  36. FSequenceEditorWindow.instance.Repaint();
  37. }
  38. serializedObject.ApplyModifiedProperties();
  39. }
  40. }
  41. }