public static void DrawWaveformPreview(WaveformPreview preview, Rect rect) { if (preview != null) { preview.ApplyModifications(); preview.Render(rect); } }
static WaveformPreview CreateWaveformPreview(AudioClip audioClip, Rect quantizedRect) { WaveformPreview preview = WaveformPreviewFactory.Create((int)quantizedRect.width, audioClip); Color waveColour = GammaCorrect(DirectorStyles.Instance.customSkin.colorAudioWaveform); Color transparent = waveColour; transparent.a = 0; preview.backgroundColor = transparent; preview.waveColor = waveColour; preview.SetChannelMode(WaveformPreview.ChannelMode.MonoSum); preview.updated += () => TimelineEditor.Refresh(RefreshReason.WindowNeedsRedraw); return(preview); }
protected override void DrawCustomClipBody(TrackDrawer.ClipDrawData drawData, Rect rect) { if (drawData.state.showAudioWaveform) { if (rect.get_width() > 0f) { TimelineClip clip = drawData.clip; AudioClip audioClip = clip.asset as AudioClip; if (audioClip == null) { AudioPlayableAsset audioPlayableAsset = drawData.clip.asset as AudioPlayableAsset; if (audioPlayableAsset != null) { audioClip = audioPlayableAsset.clip; } if (audioClip == null) { return; } } Rect rect2 = new Rect(Mathf.Ceil(rect.get_x()), Mathf.Ceil(rect.get_y()), Mathf.Ceil(rect.get_width()), Mathf.Ceil(rect.get_height())); WaveformPreview waveformPreview; if (!AudioTrackDrawer.s_PersistentPreviews.TryGetValue(drawData.clip, out waveformPreview) || audioClip != waveformPreview.presentedObject) { WaveformPreview waveformPreview2 = WaveformPreviewFactory.Create((int)rect2.get_width(), audioClip); AudioTrackDrawer.s_PersistentPreviews[drawData.clip] = waveformPreview2; waveformPreview = waveformPreview2; Color colorAudioWaveform = DirectorStyles.Instance.customSkin.colorAudioWaveform; Color backgroundColor = colorAudioWaveform; backgroundColor.a = 0f; waveformPreview.set_backgroundColor(backgroundColor); waveformPreview.set_waveColor(colorAudioWaveform); waveformPreview.SetChannelMode(0); waveformPreview.add_updated(new Action(drawData.state.editorWindow.Repaint)); } waveformPreview.set_looping(drawData.clip.SupportsLooping()); waveformPreview.SetTimeInfo(drawData.localVisibleStartTime, drawData.localVisibleEndTime - drawData.localVisibleStartTime); waveformPreview.OptimizeForSize(rect2.get_size()); if (Event.get_current().get_type() == 7) { waveformPreview.ApplyModifications(); waveformPreview.Render(rect2); } } } }
public override void DrawBackground(TimelineClip clip, ClipBackgroundRegion region) { if (!TimelineWindow.instance.state.showAudioWaveform) { return; } var rect = region.position; if (rect.width <= 0) { return; } var audioClip = clip.asset as AudioClip; if (audioClip == null) { var audioPlayableAsset = clip.asset as AudioPlayableAsset; if (audioPlayableAsset != null) { audioClip = audioPlayableAsset.clip; } } if (audioClip == null) { return; } var quantizedRect = new Rect(Mathf.Ceil(rect.x), Mathf.Ceil(rect.y), Mathf.Ceil(rect.width), Mathf.Ceil(rect.height)); WaveformPreview preview = GetOrCreateWaveformPreview(clip, audioClip, quantizedRect, region.startTime, region.endTime); if (Event.current.type == EventType.Repaint) { DrawWaveformPreview(preview, quantizedRect); } }