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();
}
}