public void DoEffectGUI(int effectIndex, AudioMixerGroupController group, List <AudioMixerGroupController> allGroups, Dictionary <AudioMixerEffectController, AudioMixerGroupController> effectMap, ref int highlightEffectIndex)
{
Event current = Event.current;
AudioMixerController controller = group.controller;
AudioMixerEffectController audioMixerEffectController = group.effects[effectIndex];
MixerParameterDefinition[] effectParameters = MixerEffectDefinitions.GetEffectParameters(audioMixerEffectController.effectName);
Rect effectRect = EditorGUILayout.BeginVertical(new GUILayoutOption[0]);
bool flag = effectRect.Contains(current.mousePosition);
EventType typeForControl = current.GetTypeForControl(this.m_EffectDragging.dragControlID);
if (typeForControl == EventType.MouseMove && flag && highlightEffectIndex != effectIndex)
{
highlightEffectIndex = effectIndex;
AudioMixerUtility.RepaintAudioMixerAndInspectors();
}
Rect rect = GUILayoutUtility.GetRect(1f, 17f);
Rect rect2 = new Rect(rect.x + 6f, rect.y + 5f, 6f, 6f);
Rect position = new Rect(rect.x + 8f + 6f, rect.y, rect.width - 8f - 6f - 14f - 5f, rect.height);
Rect rect3 = new Rect(position.xMax, rect.y, 14f, 14f);
Rect rect4 = new Rect(rect.x, rect.y, rect.width - 14f - 5f, rect.height);
bool flag2 = EditorPrefs.GetBool(AudioMixerGroupEditor.kPrefKeyForShowCpuUsage, false) && EditorUtility.audioProfilingEnabled;
float num = (!EditorGUIUtility.isProSkin) ? 1f : 0.1f;
Color color = new Color(num, num, num, 0.2f);
Color color2 = GUI.color;
GUI.color = color;
GUI.DrawTexture(rect, EditorGUIUtility.whiteTexture);
GUI.color = color2;
Color effectColor = AudioMixerDrawUtils.GetEffectColor(audioMixerEffectController);
EditorGUI.DrawRect(rect2, effectColor);
GUI.Label(position, (!flag2) ? audioMixerEffectController.effectName : (audioMixerEffectController.effectName + string.Format(AudioMixerEffectView.Texts.cpuFormatString, audioMixerEffectController.GetCPUUsage(controller))), EditorStyles.boldLabel);
if (EditorGUI.ButtonMouseDown(rect3, EditorGUI.GUIContents.titleSettingsIcon, FocusType.Passive, EditorStyles.inspectorTitlebarText))
{
AudioMixerEffectView.ShowEffectContextMenu(group, audioMixerEffectController, effectIndex, controller, rect3);
}
if (current.type == EventType.ContextClick && rect.Contains(current.mousePosition))
{
AudioMixerEffectView.ShowEffectContextMenu(group, audioMixerEffectController, effectIndex, controller, new Rect(current.mousePosition.x, rect.y, 1f, rect.height));
current.Use();
}
if (typeForControl == EventType.Repaint)
{
EditorGUIUtility.AddCursorRect(rect4, MouseCursor.ResizeVertical, this.m_EffectDragging.dragControlID);
}
using (new EditorGUI.DisabledScope(audioMixerEffectController.bypass || group.bypassEffects))
{
EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins, new GUILayoutOption[0]);
if (audioMixerEffectController.IsAttenuation())
{
EditorGUILayout.BeginVertical(new GUILayoutOption[0]);
float valueForVolume = group.GetValueForVolume(controller, controller.TargetSnapshot);
if (AudioMixerEffectGUI.Slider(AudioMixerEffectView.Texts.volume, ref valueForVolume, 1f, 1f, AudioMixerEffectView.Texts.dB, AudioMixerController.kMinVolume, AudioMixerController.GetMaxVolume(), controller, new AudioGroupParameterPath(group, group.GetGUIDForVolume()), new GUILayoutOption[0]))
{
Undo.RecordObject(controller.TargetSnapshot, "Change Volume Fader");
group.SetValueForVolume(controller, controller.TargetSnapshot, valueForVolume);
AudioMixerUtility.RepaintAudioMixerAndInspectors();
}
float[] array = new float[9];
float[] array2 = new float[9];
int num2 = group.controller.GetGroupVUInfo(group.groupID, true, ref array, ref array2);
if (current.type == EventType.Layout)
{
this.m_LastNumChannels = num2;
}
else
{
if (num2 != this.m_LastNumChannels)
{
HandleUtility.Repaint();
}
num2 = this.m_LastNumChannels;
}
GUILayout.Space(4f);
for (int i = 0; i < num2; i++)
{
float value = 1f - AudioMixerController.VolumeToScreenMapping(Mathf.Clamp(array[i], AudioMixerController.kMinVolume, AudioMixerController.GetMaxVolume()), 1f, true);
float num3 = 1f - AudioMixerController.VolumeToScreenMapping(Mathf.Clamp(array2[i], AudioMixerController.kMinVolume, AudioMixerController.GetMaxVolume()), 1f, true);
EditorGUILayout.VUMeterHorizontal(value, num3, new GUILayoutOption[]
{
GUILayout.Height(10f)
});
if (!EditorApplication.isPlaying && num3 > 0f)
{
AudioMixerUtility.RepaintAudioMixerAndInspectors();
}
}
GUILayout.Space(4f);
EditorGUILayout.EndVertical();
}
if (audioMixerEffectController.IsSend())
{
GUIContent buttonContent = (!(audioMixerEffectController.sendTarget == null)) ? GUIContent.Temp(audioMixerEffectController.GetSendTargetDisplayString(effectMap)) : AudioMixerEffectView.Texts.none;
Rect buttonRect;
if (AudioMixerEffectGUI.PopupButton(AudioMixerEffectView.Texts.bus, buttonContent, EditorStyles.popup, out buttonRect, new GUILayoutOption[0]))
{
AudioMixerEffectView.ShowBusPopupMenu(effectIndex, group, allGroups, effectMap, audioMixerEffectController, buttonRect);
}
if (audioMixerEffectController.sendTarget != null)
{
float valueForMixLevel = audioMixerEffectController.GetValueForMixLevel(controller, controller.TargetSnapshot);
if (AudioMixerEffectGUI.Slider(AudioMixerEffectView.Texts.sendLevel, ref valueForMixLevel, 1f, 1f, AudioMixerEffectView.Texts.dB, AudioMixerController.kMinVolume, AudioMixerController.kMaxEffect, controller, new AudioEffectParameterPath(group, audioMixerEffectController, audioMixerEffectController.GetGUIDForMixLevel()), new GUILayoutOption[0]))
{
Undo.RecordObject(controller.TargetSnapshot, "Change Send Level");
audioMixerEffectController.SetValueForMixLevel(controller, controller.TargetSnapshot, valueForMixLevel);
AudioMixerUtility.RepaintAudioMixerAndInspectors();
}
}
}
if (MixerEffectDefinitions.EffectCanBeSidechainTarget(audioMixerEffectController))
{
bool flag3 = false;
foreach (AudioMixerGroupController current2 in allGroups)
{
AudioMixerEffectController[] effects = current2.effects;
for (int j = 0; j < effects.Length; j++)
{
AudioMixerEffectController audioMixerEffectController2 = effects[j];
if (audioMixerEffectController2.IsSend() && audioMixerEffectController2.sendTarget == audioMixerEffectController)
{
flag3 = true;
break;
}
if (flag3)
{
break;
}
}
if (flag3)
{
break;
}
}
if (!flag3)
{
GUILayout.Label(new GUIContent("No Send sources connected.", EditorGUIUtility.warningIcon), new GUILayoutOption[0]);
}
}
if (audioMixerEffectController.enableWetMix && !audioMixerEffectController.IsReceive() && !audioMixerEffectController.IsDuckVolume() && !audioMixerEffectController.IsAttenuation() && !audioMixerEffectController.IsSend())
{
float valueForMixLevel2 = audioMixerEffectController.GetValueForMixLevel(controller, controller.TargetSnapshot);
if (AudioMixerEffectGUI.Slider(AudioMixerEffectView.Texts.wet, ref valueForMixLevel2, 1f, 1f, AudioMixerEffectView.Texts.dB, AudioMixerController.kMinVolume, AudioMixerController.kMaxEffect, controller, new AudioEffectParameterPath(group, audioMixerEffectController, audioMixerEffectController.GetGUIDForMixLevel()), new GUILayoutOption[0]))
{
Undo.RecordObject(controller.TargetSnapshot, "Change Mix Level");
audioMixerEffectController.SetValueForMixLevel(controller, controller.TargetSnapshot, valueForMixLevel2);
AudioMixerUtility.RepaintAudioMixerAndInspectors();
}
}
bool flag4 = true;
if (this.m_CustomEffectGUIs.ContainsKey(audioMixerEffectController.effectName))
{
IAudioEffectPluginGUI audioEffectPluginGUI = this.m_CustomEffectGUIs[audioMixerEffectController.effectName];
this.m_SharedPlugin.m_Controller = controller;
this.m_SharedPlugin.m_Effect = audioMixerEffectController;
this.m_SharedPlugin.m_ParamDefs = effectParameters;
flag4 = audioEffectPluginGUI.OnGUI(this.m_SharedPlugin);
}
if (flag4)
{
MixerParameterDefinition[] array3 = effectParameters;
for (int k = 0; k < array3.Length; k++)
{
MixerParameterDefinition mixerParameterDefinition = array3[k];
float valueForParameter = audioMixerEffectController.GetValueForParameter(controller, controller.TargetSnapshot, mixerParameterDefinition.name);
if (AudioMixerEffectGUI.Slider(GUIContent.Temp(mixerParameterDefinition.name, mixerParameterDefinition.description), ref valueForParameter, mixerParameterDefinition.displayScale, mixerParameterDefinition.displayExponent, mixerParameterDefinition.units, mixerParameterDefinition.minRange, mixerParameterDefinition.maxRange, controller, new AudioEffectParameterPath(group, audioMixerEffectController, audioMixerEffectController.GetGUIDForParameter(mixerParameterDefinition.name)), new GUILayoutOption[0]))
{
Undo.RecordObject(controller.TargetSnapshot, "Change " + mixerParameterDefinition.name);
audioMixerEffectController.SetValueForParameter(controller, controller.TargetSnapshot, mixerParameterDefinition.name, valueForParameter);
}
}
if (effectParameters.Length > 0)
{
GUILayout.Space(6f);
}
}
}
this.m_EffectDragging.HandleDragElement(effectIndex, effectRect, rect4, group, allGroups);
EditorGUILayout.EndVertical();
EditorGUILayout.EndVertical();
AudioMixerDrawUtils.DrawSplitter();
}