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 DrawCustomClipBody(ClipDrawData drawData, Rect rect) { if (!drawData.state.showAudioWaveform) { return; } if (rect.width <= 0) { return; } var clip = drawData.clip; AudioClip audioClip = clip.asset as AudioClip; if (audioClip == null) { var audioPlayableAsset = drawData.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; if (QualitySettings.activeColorSpace != m_ColorSpace) { m_ColorSpace = QualitySettings.activeColorSpace; k_PersistentPreviews.Clear(); } if (!k_PersistentPreviews.TryGetValue(drawData.clip, out preview) || audioClip != preview.presentedObject) { preview = k_PersistentPreviews[drawData.clip] = 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 += drawData.state.editorWindow.Repaint; } preview.looping = drawData.clip.SupportsLooping(); preview.SetTimeInfo(drawData.localVisibleStartTime, drawData.localVisibleEndTime - drawData.localVisibleStartTime); preview.OptimizeForSize(quantizedRect.size); if (Event.current.type == EventType.Repaint) { preview.ApplyModifications(); preview.Render(quantizedRect); } }
/// <inheritdoc/> 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; if (QualitySettings.activeColorSpace != m_ColorSpace) { m_ColorSpace = QualitySettings.activeColorSpace; m_PersistentPreviews.Clear(); } if (!m_PersistentPreviews.TryGetValue(clip, out preview) || audioClip != preview.presentedObject) { preview = m_PersistentPreviews[clip] = 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); } preview.looping = clip.SupportsLooping(); preview.SetTimeInfo(region.startTime, region.endTime - region.startTime); preview.OptimizeForSize(quantizedRect.size); if (Event.current.type == EventType.Repaint) { preview.ApplyModifications(); preview.Render(quantizedRect); } }