UnityEditor.AudioUtil.GetWaveFormFast C# (CSharp) Method

GetWaveFormFast() private method

private GetWaveFormFast ( AudioClip clip, int channel, int fromSample, int toSample, float width, float height ) : Texture2D
clip UnityEngine.AudioClip
channel int
fromSample int
toSample int
width float
height float
return UnityEngine.Texture2D
        public static extern Texture2D GetWaveFormFast(AudioClip clip, int channel, int fromSample, int toSample, float width, float height);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]

Usage Example

Exemplo n.º 1
0
        public override void OnPreviewGUI(Rect r, GUIStyle background)
        {
            if (AudioClipInspector.s_DefaultIcon == null)
            {
                AudioClipInspector.Init();
            }
            AudioClip audioClip = this.target as AudioClip;
            Event     current   = Event.current;

            if (current.type != EventType.Repaint && current.type != EventType.Layout && current.type != EventType.Used)
            {
                int num = AudioUtil.GetSampleCount(audioClip) / (int)r.width;
                switch (current.type)
                {
                case EventType.MouseDown:
                case EventType.MouseDrag:
                    if (r.Contains(current.mousePosition) && !AudioUtil.IsMovieAudio(audioClip))
                    {
                        if (this.m_PlayingClip != audioClip)
                        {
                            AudioUtil.StopAllClips();
                            AudioUtil.PlayClip(audioClip, 0, AudioClipInspector.m_bLoop);
                            this.m_PlayingClip = audioClip;
                        }
                        AudioUtil.SetClipSamplePosition(audioClip, num * (int)current.mousePosition.x);
                        current.Use();
                    }
                    break;
                }
                return;
            }
            if (Event.current.type == EventType.Repaint)
            {
                background.Draw(r, false, false, false, false);
            }
            int channelCount = AudioUtil.GetChannelCount(audioClip);

            AudioClipInspector.m_wantedRect = new Rect(r.x, r.y, r.width, r.height);
            float num2 = AudioClipInspector.m_wantedRect.width / audioClip.length;

            if (!AudioUtil.HasPreview(audioClip) && (AudioUtil.IsTrackerFile(audioClip) || AudioUtil.IsMovieAudio(audioClip)))
            {
                float num3 = (r.height <= 150f) ? (r.y + r.height / 2f - 25f) : (r.y + r.height / 2f - 10f);
                if (r.width > 64f)
                {
                    if (AudioUtil.IsTrackerFile(audioClip))
                    {
                        EditorGUI.DropShadowLabel(new Rect(r.x, num3, r.width, 20f), string.Format("Module file with " + AudioUtil.GetMusicChannelCount(audioClip) + " channels.", new object[0]));
                    }
                    else
                    {
                        if (AudioUtil.IsMovieAudio(audioClip))
                        {
                            if (r.width > 450f)
                            {
                                EditorGUI.DropShadowLabel(new Rect(r.x, num3, r.width, 20f), "Audio is attached to a movie. To audition the sound, play the movie.");
                            }
                            else
                            {
                                EditorGUI.DropShadowLabel(new Rect(r.x, num3, r.width, 20f), "Audio is attached to a movie.");
                                EditorGUI.DropShadowLabel(new Rect(r.x, num3 + 10f, r.width, 20f), "To audition the sound, play the movie.");
                            }
                        }
                        else
                        {
                            EditorGUI.DropShadowLabel(new Rect(r.x, num3, r.width, 20f), "Can not show PCM data for this file");
                        }
                    }
                }
                if (this.m_PlayingClip == audioClip)
                {
                    float    clipPosition = AudioUtil.GetClipPosition(audioClip);
                    TimeSpan timeSpan     = new TimeSpan(0, 0, 0, 0, (int)(clipPosition * 1000f));
                    EditorGUI.DropShadowLabel(new Rect(AudioClipInspector.m_wantedRect.x, AudioClipInspector.m_wantedRect.y, AudioClipInspector.m_wantedRect.width, 20f), string.Format("Playing - {0:00}:{1:00}.{2:000}", timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds));
                }
            }
            else
            {
                PreviewGUI.BeginScrollView(AudioClipInspector.m_wantedRect, this.m_Position, AudioClipInspector.m_wantedRect, "PreHorizontalScrollbar", "PreHorizontalScrollbarThumb");
                Texture2D texture2D;
                if (r.width < 100f)
                {
                    texture2D = AssetPreview.GetAssetPreview(audioClip);
                }
                else
                {
                    texture2D = AudioUtil.GetWaveFormFast(audioClip, 1, 0, audioClip.samples, r.width, r.height);
                }
                if (texture2D == null)
                {
                    GUI.DrawTexture(new Rect
                    {
                        x      = (AudioClipInspector.m_wantedRect.width - (float)AudioClipInspector.s_DefaultIcon.width) / 2f + AudioClipInspector.m_wantedRect.x,
                        y      = (AudioClipInspector.m_wantedRect.height - (float)AudioClipInspector.s_DefaultIcon.height) / 2f + AudioClipInspector.m_wantedRect.y,
                        width  = (float)AudioClipInspector.s_DefaultIcon.width,
                        height = (float)AudioClipInspector.s_DefaultIcon.height
                    }, AudioClipInspector.s_DefaultIcon);
                    base.Repaint();
                }
                else
                {
                    GUI.DrawTexture(new Rect(AudioClipInspector.m_wantedRect.x, AudioClipInspector.m_wantedRect.y, AudioClipInspector.m_wantedRect.width, AudioClipInspector.m_wantedRect.height), texture2D);
                }
                for (int i = 0; i < channelCount; i++)
                {
                    if (channelCount > 1 && r.width > 64f)
                    {
                        Rect position = new Rect(AudioClipInspector.m_wantedRect.x + 5f, AudioClipInspector.m_wantedRect.y + AudioClipInspector.m_wantedRect.height / (float)channelCount * (float)i, 30f, 20f);
                        EditorGUI.DropShadowLabel(position, "ch " + (i + 1).ToString());
                    }
                }
                if (this.m_PlayingClip == audioClip)
                {
                    float    clipPosition2 = AudioUtil.GetClipPosition(audioClip);
                    TimeSpan timeSpan2     = new TimeSpan(0, 0, 0, 0, (int)(clipPosition2 * 1000f));
                    GUI.DrawTexture(new Rect(AudioClipInspector.m_wantedRect.x + (float)((int)(num2 * clipPosition2)), AudioClipInspector.m_wantedRect.y, 2f, AudioClipInspector.m_wantedRect.height), EditorGUIUtility.whiteTexture);
                    if (r.width > 64f)
                    {
                        EditorGUI.DropShadowLabel(new Rect(AudioClipInspector.m_wantedRect.x, AudioClipInspector.m_wantedRect.y, AudioClipInspector.m_wantedRect.width, 20f), string.Format("{0:00}:{1:00}.{2:000}", timeSpan2.Minutes, timeSpan2.Seconds, timeSpan2.Milliseconds));
                    }
                    else
                    {
                        EditorGUI.DropShadowLabel(new Rect(AudioClipInspector.m_wantedRect.x, AudioClipInspector.m_wantedRect.y, AudioClipInspector.m_wantedRect.width, 20f), string.Format("{0:00}:{1:00}", timeSpan2.Minutes, timeSpan2.Seconds));
                    }
                    if (!AudioUtil.IsClipPlaying(audioClip))
                    {
                        this.m_PlayingClip = null;
                    }
                }
                PreviewGUI.EndScrollView();
            }
            if (AudioClipInspector.m_bPlayFirst)
            {
                AudioUtil.PlayClip(audioClip, 0, AudioClipInspector.m_bLoop);
                this.m_PlayingClip = audioClip;
                AudioClipInspector.m_bPlayFirst = false;
            }
            if (this.playing)
            {
                GUIView.current.Repaint();
            }
        }
All Usage Examples Of UnityEditor.AudioUtil::GetWaveFormFast