private void EffectSlot(Rect effectRect, AudioMixerSnapshotController snapshot, AudioMixerEffectController effect, int effectIndex, ref int highlightEffectIndex, AudioMixerChannelStripView.ChannelStripParams p, ref Dictionary<AudioMixerEffectController, AudioMixerChannelStripView.PatchSlot> patchslots)
		{
			if (effect == null)
			{
				return;
			}
			Rect rect = effectRect;
			Event current = Event.current;
			if (current.type == EventType.Repaint && patchslots != null && (effect.IsSend() || MixerEffectDefinitions.EffectCanBeSidechainTarget(effect)))
			{
				AudioMixerChannelStripView.PatchSlot patchSlot = new AudioMixerChannelStripView.PatchSlot();
				patchSlot.group = p.group;
				patchSlot.x = rect.xMax - (rect.yMax - rect.yMin) * 0.5f;
				patchSlot.y = (rect.yMin + rect.yMax) * 0.5f;
				patchslots[effect] = patchSlot;
			}
			bool flag = !effect.DisallowsBypass();
			Rect position = rect;
			position.width = 10f;
			rect.xMin += 10f;
			if (flag && GUI.Button(position, this.bypassButtonContent, GUIStyle.none))
			{
				effect.bypass = !effect.bypass;
				this.m_Controller.UpdateBypass();
				InspectorWindow.RepaintAllInspectors();
			}
			this.m_IndexCounter++;
			float num = (!(effect != null)) ? AudioMixerController.kMinVolume : Mathf.Clamp(effect.GetValueForMixLevel(this.m_Controller, snapshot), AudioMixerController.kMinVolume, AudioMixerController.kMaxEffect);
			bool flag2 = effect != null && ((effect.IsSend() && effect.sendTarget != null) || effect.enableWetMix);
			if (current.type == EventType.Repaint)
			{
				GUIStyle effectBarStyle = this.GetEffectBarStyle(effect);
				float num2 = (!flag2) ? 1f : ((num - AudioMixerController.kMinVolume) / (AudioMixerController.kMaxEffect - AudioMixerController.kMinVolume));
				bool flag3 = (!p.group.bypassEffects && (effect == null || !effect.bypass)) || (effect != null && effect.DisallowsBypass());
				Color color = (!(effect != null)) ? new Color(0f, 0f, 0f, 0.5f) : AudioMixerDrawUtils.GetEffectColor(effect);
				if (!flag3)
				{
					color = new Color(color.r * 0.5f, color.g * 0.5f, color.b * 0.5f);
				}
				if (flag3)
				{
					if (num2 < 1f)
					{
						float num3 = rect.width * num2;
						if (num3 < 4f)
						{
							num3 = Mathf.Max(num3, 2f);
							float num4 = 1f - num3 / 4f;
							Color color2 = GUI.color;
							if (!GUI.enabled)
							{
								GUI.color = new Color(1f, 1f, 1f, 0.5f);
							}
							GUI.DrawTextureWithTexCoords(new Rect(rect.x, rect.y, num3, rect.height), effectBarStyle.focused.background, new Rect(num4, 0f, 1f - num4, 1f));
							GUI.color = color2;
						}
						else
						{
							effectBarStyle.Draw(new Rect(rect.x, rect.y, num3, rect.height), false, false, false, true);
						}
						GUI.DrawTexture(new Rect(rect.x + num3, rect.y, rect.width - num3, rect.height), effectBarStyle.onFocused.background, ScaleMode.StretchToFill);
					}
					else
					{
						effectBarStyle.Draw(rect, !flag2, false, false, flag2);
					}
				}
				else
				{
					effectBarStyle.Draw(rect, false, false, false, false);
				}
				if (flag)
				{
					this.styles.circularToggle.Draw(new Rect(position.x + 2f, position.y + 5f, position.width - 2f, position.width - 2f), false, false, !effect.bypass, false);
				}
				if (effect.IsSend() && effect.sendTarget != null)
				{
					position.y -= 1f;
					GUI.Label(position, this.styles.sendString, EditorStyles.miniLabel);
				}
				EditorGUI.BeginDisabledGroup(!flag3);
				string effectSlotName = this.GetEffectSlotName(effect, flag2, snapshot, p);
				string effectSlotTooltip = this.GetEffectSlotTooltip(effect, rect, p);
				GUI.Label(new Rect(rect.x, rect.y, rect.width - 10f, rect.height), GUIContent.Temp(effectSlotName, effectSlotTooltip), this.styles.effectName);
				EditorGUI.EndDisabledGroup();
			}
			else
			{
				this.EffectSlotDragging(effectRect, snapshot, effect, flag2, num, effectIndex, ref highlightEffectIndex, p);
			}
		}
		private string GetEffectSlotName(AudioMixerEffectController effect, bool showLevel, AudioMixerSnapshotController snapshot, AudioMixerChannelStripView.ChannelStripParams p)
		{
			if (this.m_ChangingWetMixIndex == this.m_IndexCounter && showLevel)
			{
				return string.Format("{0:F1} dB", effect.GetValueForMixLevel(this.m_Controller, snapshot));
			}
			if (effect.IsSend() && effect.sendTarget != null)
			{
				return effect.GetSendTargetDisplayString(p.effectMap);
			}
			return effect.effectName;
		}
		private void RectSelection(AudioMixerChannelStripView.ChannelStripParams channelStripParams)
		{
			Event current = Event.current;
			if (current.type == EventType.MouseDown && current.button == 0 && GUIUtility.hotControl == 0)
			{
				if (!current.shift)
				{
					Selection.objects = new UnityEngine.Object[0];
					this.m_Controller.OnUnitySelectionChanged();
				}
				GUIUtility.hotControl = this.m_RectSelectionControlID;
				this.m_RectSelectionStartPos = current.mousePosition;
				this.m_RectSelectionRect = new Rect(this.m_RectSelectionStartPos.x, this.m_RectSelectionStartPos.y, 0f, 0f);
				Event.current.Use();
				InspectorWindow.RepaintAllInspectors();
			}
			if (current.type == EventType.MouseDrag)
			{
				if (this.IsRectSelectionActive())
				{
					this.m_RectSelectionRect.x = Mathf.Min(this.m_RectSelectionStartPos.x, current.mousePosition.x);
					this.m_RectSelectionRect.y = Mathf.Min(this.m_RectSelectionStartPos.y, current.mousePosition.y);
					this.m_RectSelectionRect.width = Mathf.Max(this.m_RectSelectionStartPos.x, current.mousePosition.x) - this.m_RectSelectionRect.x;
					this.m_RectSelectionRect.height = Mathf.Max(this.m_RectSelectionStartPos.y, current.mousePosition.y) - this.m_RectSelectionRect.y;
					Event.current.Use();
				}
				if (this.m_MovingSrcRect.y >= 0f)
				{
					Event.current.Use();
				}
			}
			if (this.IsRectSelectionActive() && current.GetTypeForControl(this.m_RectSelectionControlID) == EventType.MouseUp)
			{
				List<AudioMixerGroupController> list = (!current.shift) ? new List<AudioMixerGroupController>() : this.m_Controller.CachedSelection;
				foreach (AudioMixerGroupController current2 in channelStripParams.rectSelectionGroups)
				{
					if (!list.Contains(current2))
					{
						list.Add(current2);
					}
				}
				Selection.objects = list.ToArray();
				this.m_Controller.OnUnitySelectionChanged();
				GUIUtility.hotControl = 0;
				Event.current.Use();
			}
			if (current.type == EventType.Repaint && this.IsRectSelectionActive())
			{
				Color color = new Color(1f, 1f, 1f, 0.3f);
				AudioMixerDrawUtils.DrawGradientRectHorizontal(this.m_RectSelectionRect, color, color);
			}
		}
		public AudioMixerChannelStripView(AudioMixerChannelStripView.State state)
		{
			this.m_State = state;
		}
 private void RectSelection(AudioMixerChannelStripView.ChannelStripParams channelStripParams)
 {
   Event current1 = Event.current;
   if (current1.type == EventType.MouseDown && current1.button == 0 && GUIUtility.hotControl == 0)
   {
     if (!current1.shift)
     {
       Selection.objects = new UnityEngine.Object[0];
       this.m_Controller.OnUnitySelectionChanged();
     }
     GUIUtility.hotControl = this.m_RectSelectionControlID;
     this.m_RectSelectionStartPos = current1.mousePosition;
     this.m_RectSelectionRect = new Rect(this.m_RectSelectionStartPos.x, this.m_RectSelectionStartPos.y, 0.0f, 0.0f);
     Event.current.Use();
     InspectorWindow.RepaintAllInspectors();
   }
   if (current1.type == EventType.MouseDrag)
   {
     if (this.IsRectSelectionActive())
     {
       this.m_RectSelectionRect.x = Mathf.Min(this.m_RectSelectionStartPos.x, current1.mousePosition.x);
       this.m_RectSelectionRect.y = Mathf.Min(this.m_RectSelectionStartPos.y, current1.mousePosition.y);
       this.m_RectSelectionRect.width = Mathf.Max(this.m_RectSelectionStartPos.x, current1.mousePosition.x) - this.m_RectSelectionRect.x;
       this.m_RectSelectionRect.height = Mathf.Max(this.m_RectSelectionStartPos.y, current1.mousePosition.y) - this.m_RectSelectionRect.y;
       Event.current.Use();
     }
     if ((double) this.m_MovingSrcRect.y >= 0.0)
       Event.current.Use();
   }
   if (this.IsRectSelectionActive() && current1.GetTypeForControl(this.m_RectSelectionControlID) == EventType.MouseUp)
   {
     List<AudioMixerGroupController> mixerGroupControllerList = !current1.shift ? new List<AudioMixerGroupController>() : this.m_Controller.CachedSelection;
     using (List<AudioMixerGroupController>.Enumerator enumerator = channelStripParams.rectSelectionGroups.GetEnumerator())
     {
       while (enumerator.MoveNext())
       {
         AudioMixerGroupController current2 = enumerator.Current;
         if (!mixerGroupControllerList.Contains(current2))
           mixerGroupControllerList.Add(current2);
       }
     }
     Selection.objects = (UnityEngine.Object[]) mixerGroupControllerList.ToArray();
     this.m_Controller.OnUnitySelectionChanged();
     GUIUtility.hotControl = 0;
     Event.current.Use();
   }
   if (current1.type != EventType.Repaint || !this.IsRectSelectionActive())
     return;
   Color color = new Color(1f, 1f, 1f, 0.3f);
   AudioMixerDrawUtils.DrawGradientRectHorizontal(this.m_RectSelectionRect, color, color);
 }
		private float DoVUMeters(Rect vuRect, float attenuationMarkerHeight, AudioMixerChannelStripView.ChannelStripParams p)
		{
			float num = 1f;
			int num2 = p.numChannels;
			if (num2 == 0)
			{
				if (p.index >= 0 && p.index < this.m_LastNumChannels.Count)
				{
					num2 = this.m_LastNumChannels[p.index];
				}
			}
			else
			{
				while (p.index >= this.m_LastNumChannels.Count)
				{
					this.m_LastNumChannels.Add(0);
				}
				this.m_LastNumChannels[p.index] = num2;
			}
			if (num2 <= 2)
			{
				vuRect.x = vuRect.xMax - 25f;
				vuRect.width = 25f;
			}
			if (num2 == 0)
			{
				return vuRect.x;
			}
			float num3 = Mathf.Floor(attenuationMarkerHeight / 2f);
			vuRect.y += num3;
			vuRect.height -= 2f * num3;
			float num4 = Mathf.Round((vuRect.width - (float)num2 * num) / (float)num2);
			Rect r = new Rect(vuRect.xMax - num4, vuRect.y, num4, vuRect.height);
			for (int i = num2 - 1; i >= 0; i--)
			{
				if (i != num2 - 1)
				{
					r.x -= r.width + num;
				}
				float level = 1f - AudioMixerController.VolumeToScreenMapping(Mathf.Clamp(p.vuinfo_level[i], AudioMixerController.kMinVolume, AudioMixerController.GetMaxVolume()), 1f, true);
				float peak = 1f - AudioMixerController.VolumeToScreenMapping(Mathf.Clamp(p.vuinfo_peak[i], AudioMixerController.kMinVolume, AudioMixerController.GetMaxVolume()), 1f, true);
				this.VUMeter(p.group, r, level, peak);
			}
			AudioMixerDrawUtils.AddTooltipOverlay(vuRect, this.styles.vuMeterGUIContent.tooltip);
			return r.x;
		}
		private void DrawChannelStrip(AudioMixerChannelStripView.ChannelStripParams p, ref int highlightEffectIndex, ref Dictionary<AudioMixerEffectController, AudioMixerChannelStripView.PatchSlot> patchslots, bool showBusConnectionsOfSelection)
		{
			Event current = Event.current;
			bool flag = current.type == EventType.MouseDown && p.stripRect.Contains(current.mousePosition);
			bool selected = this.m_Controller.CachedSelection.Contains(p.group);
			if (this.IsRectSelectionActive() && AudioMixerChannelStripView.RectOverlaps(p.stripRect, this.m_RectSelectionRect))
			{
				p.rectSelectionGroups.Add(p.group);
				selected = true;
			}
			this.DrawBackgrounds(p, selected);
			GUIContent arg_9B_0 = this.headerGUIContent;
			string displayString = p.group.GetDisplayString();
			this.headerGUIContent.tooltip = displayString;
			arg_9B_0.text = displayString;
			GUI.Label(p.bgRects[p.kHeaderIndex], this.headerGUIContent, AudioMixerDrawUtils.styles.channelStripHeaderStyle);
			Rect rect = new RectOffset(-6, 0, 0, -4).Add(p.bgRects[p.kVUMeterFaderIndex]);
			float num = 1f;
			float num2 = 54f;
			float width = rect.width - num2 - num;
			Rect vuRect = new Rect(rect.x, rect.y, num2, rect.height);
			Rect rect2 = new Rect(vuRect.xMax + num, rect.y, width, rect.height);
			float width2 = 29f;
			Rect r = new Rect(rect2.x, rect2.y, width2, rect2.height);
			Rect rect3 = p.bgRects[p.kSoloMuteBypassIndex];
			GUIStyle channelStripAttenuationMarkerSquare = AudioMixerDrawUtils.styles.channelStripAttenuationMarkerSquare;
			EditorGUI.BeginDisabledGroup(!AudioMixerController.EditingTargetSnapshot());
			this.DoVUMeters(vuRect, channelStripAttenuationMarkerSquare.fixedHeight, p);
			this.DoAttenuationFader(r, p.group, this.m_Controller.CachedSelection, channelStripAttenuationMarkerSquare);
			this.DoTotaldB(p);
			this.DoEffectList(p, selected, ref highlightEffectIndex, ref patchslots, showBusConnectionsOfSelection);
			EditorGUI.EndDisabledGroup();
			this.DoSoloMuteBypassButtons(rect3, p.group, p.allGroups, this.m_Controller.CachedSelection, p.anySoloActive);
			if (flag)
			{
				this.GroupClicked(p.group, p, current.type == EventType.Used);
			}
			if (current.type == EventType.ContextClick && p.stripRect.Contains(current.mousePosition))
			{
				current.Use();
				this.OpenGroupContextMenu(p.group);
			}
		}
		private void GroupClicked(AudioMixerGroupController clickedGroup, AudioMixerChannelStripView.ChannelStripParams p, bool clickedControlInGroup)
		{
			List<int> list = new List<int>();
			foreach (AudioMixerGroupController current in p.shownGroups)
			{
				list.Add(current.GetInstanceID());
			}
			List<int> list2 = new List<int>();
			foreach (AudioMixerGroupController current2 in this.m_Controller.CachedSelection)
			{
				list2.Add(current2.GetInstanceID());
			}
			int lastClickedInstanceID = this.m_State.m_LastClickedInstanceID;
			bool allowMultiSelection = true;
			bool keepMultiSelection = Event.current.shift || clickedControlInGroup;
			bool useShiftAsActionKey = false;
			List<int> newSelection = InternalEditorUtility.GetNewSelection(clickedGroup.GetInstanceID(), list, list2, lastClickedInstanceID, keepMultiSelection, useShiftAsActionKey, allowMultiSelection);
			List<AudioMixerGroupController> list3 = (
				from x in p.allGroups
				where newSelection.Contains(x.GetInstanceID())
				select x).ToList<AudioMixerGroupController>();
			Selection.objects = list3.ToArray();
			this.m_Controller.OnUnitySelectionChanged();
			InspectorWindow.RepaintAllInspectors();
		}
 private void DrawBackgrounds(AudioMixerChannelStripView.ChannelStripParams p, bool selected)
 {
   if (Event.current.type == EventType.Repaint)
   {
     this.styles.channelStripBg.Draw(p.stripRect, false, false, selected, false);
     float num1 = 0.4666667f;
     float num2 = 0.227451f;
     Color color = !EditorGUIUtility.isProSkin ? new Color(num1, num1, num1) : new Color(num2, num2, num2);
     Rect bgRect = p.bgRects[p.kEffectStartIndex];
     --bgRect.y;
     bgRect.height = 1f;
     EditorGUI.DrawRect(bgRect, color);
   }
   Rect bgRect1 = p.bgRects[p.kVUMeterFaderIndex];
   bgRect1.height = !EditorGUIUtility.isProSkin ? 2f : 1f;
   bgRect1.y -= bgRect1.height;
   int userColorIndex = p.group.userColorIndex;
   if (userColorIndex == 0)
     return;
   EditorGUI.DrawRect(bgRect1, AudioMixerColorCodes.GetColor(userColorIndex));
 }
		private void DrawBackgrounds(AudioMixerChannelStripView.ChannelStripParams p, bool selected)
		{
			if (Event.current.type == EventType.Repaint)
			{
				this.styles.channelStripBg.Draw(p.stripRect, false, false, selected, false);
				float num = 0.466666669f;
				float num2 = 0.227450982f;
				Color color = (!EditorGUIUtility.isProSkin) ? new Color(num, num, num) : new Color(num2, num2, num2);
				Rect rect = p.bgRects[p.kEffectStartIndex];
				rect.y -= 1f;
				rect.height = 1f;
				EditorGUI.DrawRect(rect, color);
			}
			Rect rect2 = p.bgRects[p.kVUMeterFaderIndex];
			rect2.height = (float)((!EditorGUIUtility.isProSkin) ? 2 : 1);
			rect2.y -= rect2.height;
			int userColorIndex = p.group.userColorIndex;
			if (userColorIndex != 0)
			{
				EditorGUI.DrawRect(rect2, AudioMixerColorCodes.GetColor(userColorIndex));
			}
		}
 private void GroupClicked(AudioMixerGroupController clickedGroup, AudioMixerChannelStripView.ChannelStripParams p, bool clickedControlInGroup)
 {
   // ISSUE: object of a compiler-generated type is created
   // ISSUE: variable of a compiler-generated type
   AudioMixerChannelStripView.\u003CGroupClicked\u003Ec__AnonStorey60 clickedCAnonStorey60 = new AudioMixerChannelStripView.\u003CGroupClicked\u003Ec__AnonStorey60();
   List<int> allInstanceIDs = new List<int>();
   using (List<AudioMixerGroupController>.Enumerator enumerator = p.shownGroups.GetEnumerator())
   {
     while (enumerator.MoveNext())
     {
       AudioMixerGroupController current = enumerator.Current;
       allInstanceIDs.Add(current.GetInstanceID());
     }
   }
   List<int> selectedInstanceIDs = new List<int>();
   using (List<AudioMixerGroupController>.Enumerator enumerator = this.m_Controller.CachedSelection.GetEnumerator())
   {
     while (enumerator.MoveNext())
     {
       AudioMixerGroupController current = enumerator.Current;
       selectedInstanceIDs.Add(current.GetInstanceID());
     }
   }
   int clickedInstanceId = this.m_State.m_LastClickedInstanceID;
   bool allowMultiSelection = true;
   bool keepMultiSelection = Event.current.shift || clickedControlInGroup;
   bool useShiftAsActionKey = false;
   // ISSUE: reference to a compiler-generated field
   clickedCAnonStorey60.newSelection = InternalEditorUtility.GetNewSelection(clickedGroup.GetInstanceID(), allInstanceIDs, selectedInstanceIDs, clickedInstanceId, keepMultiSelection, useShiftAsActionKey, allowMultiSelection);
   // ISSUE: reference to a compiler-generated method
   Selection.objects = (UnityEngine.Object[]) p.allGroups.Where<AudioMixerGroupController>(new Func<AudioMixerGroupController, bool>(clickedCAnonStorey60.\u003C\u003Em__A4)).ToList<AudioMixerGroupController>().ToArray();
   this.m_Controller.OnUnitySelectionChanged();
   InspectorWindow.RepaintAllInspectors();
 }
 private void EffectSlotDragging(Rect r, AudioMixerSnapshotController snapshot, AudioMixerEffectController effect, bool showLevel, float level, int effectIndex, ref int highlightEffectIndex, AudioMixerChannelStripView.ChannelStripParams p)
 {
   Event current1 = Event.current;
   switch (current1.GetTypeForControl(this.m_EffectInteractionControlID))
   {
     case EventType.MouseDown:
       if (!r.Contains(current1.mousePosition) || current1.button != 0 || GUIUtility.hotControl != 0)
         break;
       GUIUtility.hotControl = this.m_EffectInteractionControlID;
       this.m_MouseDragStartX = current1.mousePosition.x;
       this.m_MouseDragStartValue = level;
       highlightEffectIndex = effectIndex;
       this.m_MovingEffectSrcIndex = -1;
       this.m_MovingEffectDstIndex = -1;
       this.m_WaitingForDragEvent = true;
       this.m_MovingSrcRect = r;
       this.m_MovingDstRect = r;
       this.m_MovingSrcGroup = p.group;
       this.m_MovingDstGroup = p.group;
       this.m_MovingEffectAllowed = true;
       this.SetFocus();
       Event.current.Use();
       EditorGUIUtility.SetWantsMouseJumping(1);
       InspectorWindow.RepaintAllInspectors();
       break;
     case EventType.MouseUp:
       if (GUIUtility.hotControl != this.m_EffectInteractionControlID || current1.button != 0 || !p.stripRect.Contains(current1.mousePosition))
         break;
       if (this.m_MovingEffectDstIndex != -1 && this.m_MovingEffectAllowed)
       {
         if (this.IsDuplicateKeyPressed() && this.CanDuplicateDraggedEffect())
         {
           AudioMixerEffectController effect1 = this.m_MovingSrcGroup.controller.CopyEffect(this.m_MovingSrcGroup.effects[this.m_MovingEffectSrcIndex]);
           List<AudioMixerEffectController> list = ((IEnumerable<AudioMixerEffectController>) this.m_MovingDstGroup.effects).ToList<AudioMixerEffectController>();
           if (AudioMixerController.InsertEffect(effect1, ref list, this.m_MovingEffectDstIndex))
             this.m_MovingDstGroup.effects = list.ToArray();
         }
         else if ((UnityEngine.Object) this.m_MovingSrcGroup == (UnityEngine.Object) this.m_MovingDstGroup)
         {
           List<AudioMixerEffectController> list = ((IEnumerable<AudioMixerEffectController>) this.m_MovingSrcGroup.effects).ToList<AudioMixerEffectController>();
           if (AudioMixerController.MoveEffect(ref list, this.m_MovingEffectSrcIndex, ref list, this.m_MovingEffectDstIndex))
             this.m_MovingSrcGroup.effects = list.ToArray();
         }
         else if (!this.m_MovingSrcGroup.effects[this.m_MovingEffectSrcIndex].IsAttenuation())
         {
           List<AudioMixerEffectController> list1 = ((IEnumerable<AudioMixerEffectController>) this.m_MovingSrcGroup.effects).ToList<AudioMixerEffectController>();
           List<AudioMixerEffectController> list2 = ((IEnumerable<AudioMixerEffectController>) this.m_MovingDstGroup.effects).ToList<AudioMixerEffectController>();
           if (AudioMixerController.MoveEffect(ref list1, this.m_MovingEffectSrcIndex, ref list2, this.m_MovingEffectDstIndex))
           {
             this.m_MovingSrcGroup.effects = list1.ToArray();
             this.m_MovingDstGroup.effects = list2.ToArray();
           }
         }
       }
       this.ClearEffectDragging(ref highlightEffectIndex);
       current1.Use();
       EditorGUIUtility.SetWantsMouseJumping(0);
       GUIUtility.ExitGUI();
       break;
     case EventType.MouseDrag:
       if (GUIUtility.hotControl != this.m_EffectInteractionControlID)
         break;
       if (this.HasFocus() && this.m_WaitingForDragEvent)
       {
         this.m_ChangingWetMixIndex = -1;
         if (effectIndex < p.group.effects.Length)
         {
           if ((double) Mathf.Abs(current1.delta.y) > (double) Mathf.Abs(current1.delta.x))
           {
             this.m_MovingEffectSrcIndex = effectIndex;
             this.ClearFocus();
           }
           else
             this.m_ChangingWetMixIndex = this.m_IndexCounter;
         }
         this.m_WaitingForDragEvent = false;
       }
       if (this.IsMovingEffect() && p.stripRect.Contains(current1.mousePosition))
       {
         float num1 = r.height * 0.5f;
         float num2 = effectIndex != 0 ? 0.0f : -num1;
         float num3 = effectIndex != p.group.effects.Length - 1 ? r.height : r.height + num1;
         float num4 = current1.mousePosition.y - r.y;
         if ((double) num4 >= (double) num2 && (double) num4 <= (double) num3 && effectIndex < p.group.effects.Length)
         {
           int targetIndex = (double) num4 >= (double) num1 ? effectIndex + 1 : effectIndex;
           if (targetIndex != this.m_MovingEffectDstIndex || (UnityEngine.Object) this.m_MovingDstGroup != (UnityEngine.Object) p.group)
           {
             this.m_MovingDstRect.x = r.x;
             this.m_MovingDstRect.width = r.width;
             this.m_MovingDstRect.y = (float) (((double) num4 >= (double) num1 ? (double) r.y + (double) r.height : (double) r.y) - 1.0);
             this.m_MovingEffectDstIndex = targetIndex;
             this.m_MovingDstGroup = p.group;
             this.m_MovingEffectAllowed = (!this.m_MovingSrcGroup.effects[this.m_MovingEffectSrcIndex].IsAttenuation() || !((UnityEngine.Object) this.m_MovingSrcGroup != (UnityEngine.Object) this.m_MovingDstGroup)) && !AudioMixerController.WillMovingEffectCauseFeedback(p.allGroups, this.m_MovingSrcGroup, this.m_MovingEffectSrcIndex, this.m_MovingDstGroup, targetIndex, (List<AudioMixerController.ConnectionNode>) null) && (!this.IsDuplicateKeyPressed() || this.CanDuplicateDraggedEffect());
           }
           current1.Use();
         }
       }
       if (!this.IsAdjustingWetMix() || !this.HasFocus() || !showLevel)
         break;
       this.m_WaitingForDragEvent = false;
       float num = Mathf.Clamp(AudioMixerChannelStripView.kEffectScaleMouseDrag * HandleUtility.niceMouseDelta + level, AudioMixerController.kMinVolume, AudioMixerController.kMaxEffect) - level;
       if ((double) num != 0.0)
       {
         Undo.RecordObject((UnityEngine.Object) this.m_Controller.TargetSnapshot, "Change effect level");
         if (effect.IsSend() && this.m_Controller.CachedSelection.Count > 1 && this.m_Controller.CachedSelection.Contains(p.group))
         {
           List<AudioMixerEffectController> effectControllerList = new List<AudioMixerEffectController>();
           using (List<AudioMixerGroupController>.Enumerator enumerator = this.m_Controller.CachedSelection.GetEnumerator())
           {
             while (enumerator.MoveNext())
             {
               foreach (AudioMixerEffectController effect1 in enumerator.Current.effects)
               {
                 if (effect1.effectName == effect.effectName && (UnityEngine.Object) effect1.sendTarget == (UnityEngine.Object) effect.sendTarget)
                   effectControllerList.Add(effect1);
               }
             }
           }
           using (List<AudioMixerEffectController>.Enumerator enumerator = effectControllerList.GetEnumerator())
           {
             while (enumerator.MoveNext())
             {
               AudioMixerEffectController current2 = enumerator.Current;
               if (!current2.IsSend() || (UnityEngine.Object) current2.sendTarget != (UnityEngine.Object) null)
                 current2.SetValueForMixLevel(this.m_Controller, snapshot, Mathf.Clamp(current2.GetValueForMixLevel(this.m_Controller, snapshot) + num, AudioMixerController.kMinVolume, AudioMixerController.kMaxEffect));
             }
           }
         }
         else if (!effect.IsSend() || (UnityEngine.Object) effect.sendTarget != (UnityEngine.Object) null)
           effect.SetValueForMixLevel(this.m_Controller, snapshot, Mathf.Clamp(level + num, AudioMixerController.kMinVolume, AudioMixerController.kMaxEffect));
         InspectorWindow.RepaintAllInspectors();
       }
       current1.Use();
       break;
   }
 }
 private void EffectSlot(Rect effectRect, AudioMixerSnapshotController snapshot, AudioMixerEffectController effect, int effectIndex, ref int highlightEffectIndex, AudioMixerChannelStripView.ChannelStripParams p, ref Dictionary<AudioMixerEffectController, AudioMixerChannelStripView.PatchSlot> patchslots)
 {
   if ((UnityEngine.Object) effect == (UnityEngine.Object) null)
     return;
   Rect rect = effectRect;
   Event current = Event.current;
   if (current.type == EventType.Repaint && patchslots != null && (effect.IsSend() || MixerEffectDefinitions.EffectCanBeSidechainTarget(effect)))
     patchslots[effect] = new AudioMixerChannelStripView.PatchSlot()
     {
       group = p.group,
       x = rect.xMax - (float) (((double) rect.yMax - (double) rect.yMin) * 0.5),
       y = (float) (((double) rect.yMin + (double) rect.yMax) * 0.5)
     };
   bool flag1 = !effect.DisallowsBypass();
   Rect position = rect;
   position.width = 10f;
   rect.xMin += 10f;
   if (flag1 && GUI.Button(position, this.bypassButtonContent, GUIStyle.none))
   {
     effect.bypass = !effect.bypass;
     this.m_Controller.UpdateBypass();
     InspectorWindow.RepaintAllInspectors();
   }
   ++this.m_IndexCounter;
   float level = !((UnityEngine.Object) effect != (UnityEngine.Object) null) ? AudioMixerController.kMinVolume : Mathf.Clamp(effect.GetValueForMixLevel(this.m_Controller, snapshot), AudioMixerController.kMinVolume, AudioMixerController.kMaxEffect);
   bool flag2 = (UnityEngine.Object) effect != (UnityEngine.Object) null && (effect.IsSend() && (UnityEngine.Object) effect.sendTarget != (UnityEngine.Object) null || effect.enableWetMix);
   if (current.type == EventType.Repaint)
   {
     GUIStyle effectBarStyle = this.GetEffectBarStyle(effect);
     float num1 = !flag2 ? 1f : (float) (((double) level - (double) AudioMixerController.kMinVolume) / ((double) AudioMixerController.kMaxEffect - (double) AudioMixerController.kMinVolume));
     bool flag3 = !p.group.bypassEffects && ((UnityEngine.Object) effect == (UnityEngine.Object) null || !effect.bypass) || (UnityEngine.Object) effect != (UnityEngine.Object) null && effect.DisallowsBypass();
     Color color1 = !((UnityEngine.Object) effect != (UnityEngine.Object) null) ? new Color(0.0f, 0.0f, 0.0f, 0.5f) : AudioMixerDrawUtils.GetEffectColor(effect);
     if (!flag3)
       color1 = new Color(color1.r * 0.5f, color1.g * 0.5f, color1.b * 0.5f);
     if (flag3)
     {
       if ((double) num1 < 1.0)
       {
         float num2 = rect.width * num1;
         if ((double) num2 < 4.0)
         {
           num2 = Mathf.Max(num2, 2f);
           float x = (float) (1.0 - (double) num2 / 4.0);
           Color color2 = GUI.color;
           if (!GUI.enabled)
             GUI.color = new Color(1f, 1f, 1f, 0.5f);
           GUI.DrawTextureWithTexCoords(new Rect(rect.x, rect.y, num2, rect.height), (Texture) effectBarStyle.focused.background, new Rect(x, 0.0f, 1f - x, 1f));
           GUI.color = color2;
         }
         else
           effectBarStyle.Draw(new Rect(rect.x, rect.y, num2, rect.height), false, false, false, true);
         GUI.DrawTexture(new Rect(rect.x + num2, rect.y, rect.width - num2, rect.height), (Texture) effectBarStyle.onFocused.background, ScaleMode.StretchToFill);
       }
       else
         effectBarStyle.Draw(rect, !flag2, false, false, flag2);
     }
     else
       effectBarStyle.Draw(rect, false, false, false, false);
     if (flag1)
       this.styles.circularToggle.Draw(new Rect(position.x + 2f, position.y + 5f, position.width - 2f, position.width - 2f), false, false, !effect.bypass, false);
     if (effect.IsSend() && (UnityEngine.Object) effect.sendTarget != (UnityEngine.Object) null)
     {
       --position.y;
       GUI.Label(position, this.styles.sendString, EditorStyles.miniLabel);
     }
     EditorGUI.BeginDisabledGroup(!flag3);
     string effectSlotName = this.GetEffectSlotName(effect, flag2, snapshot, p);
     string effectSlotTooltip = this.GetEffectSlotTooltip(effect, rect, p);
     GUI.Label(new Rect(rect.x, rect.y, rect.width - 10f, rect.height), GUIContent.Temp(effectSlotName, effectSlotTooltip), this.styles.effectName);
     EditorGUI.EndDisabledGroup();
   }
   else
     this.EffectSlotDragging(effectRect, snapshot, effect, flag2, level, effectIndex, ref highlightEffectIndex, p);
 }
		private string GetEffectSlotTooltip(AudioMixerEffectController effect, Rect effectRect, AudioMixerChannelStripView.ChannelStripParams p)
		{
			if (!effectRect.Contains(Event.current.mousePosition))
			{
				return string.Empty;
			}
			if (effect.IsSend())
			{
				if (effect.sendTarget != null)
				{
					string sendTargetDisplayString = effect.GetSendTargetDisplayString(p.effectMap);
					return "Send to: " + sendTargetDisplayString;
				}
				return this.styles.emptySendSlotGUIContent.tooltip;
			}
			else
			{
				if (effect.IsReceive())
				{
					return this.styles.returnSlotGUIContent.tooltip;
				}
				if (effect.IsDuckVolume())
				{
					return this.styles.duckVolumeSlotGUIContent.tooltip;
				}
				if (effect.IsAttenuation())
				{
					return this.styles.attenuationSlotGUIContent.tooltip;
				}
				return this.styles.effectSlotGUIContent.tooltip;
			}
		}
		private void DoTotaldB(AudioMixerChannelStripView.ChannelStripParams p)
		{
			float num = 50f;
			this.styles.totalVULevel.padding.right = (int)((p.stripRect.width - num) * 0.5f);
			float num2 = Mathf.Max(p.vuinfo_level[8], -80f);
			Rect position = p.bgRects[p.kTotalVULevelIndex];
			GUI.Label(position, string.Format("{0:F1} dB", num2), this.styles.totalVULevel);
		}
		private void EffectSlotDragging(Rect r, AudioMixerSnapshotController snapshot, AudioMixerEffectController effect, bool showLevel, float level, int effectIndex, ref int highlightEffectIndex, AudioMixerChannelStripView.ChannelStripParams p)
		{
			Event current = Event.current;
			switch (current.GetTypeForControl(this.m_EffectInteractionControlID))
			{
			case EventType.MouseDown:
				if (r.Contains(current.mousePosition) && current.button == 0 && GUIUtility.hotControl == 0)
				{
					GUIUtility.hotControl = this.m_EffectInteractionControlID;
					this.m_MouseDragStartX = current.mousePosition.x;
					this.m_MouseDragStartValue = level;
					highlightEffectIndex = effectIndex;
					this.m_MovingEffectSrcIndex = -1;
					this.m_MovingEffectDstIndex = -1;
					this.m_WaitingForDragEvent = true;
					this.m_MovingSrcRect = r;
					this.m_MovingDstRect = r;
					this.m_MovingSrcGroup = p.group;
					this.m_MovingDstGroup = p.group;
					this.m_MovingEffectAllowed = true;
					this.SetFocus();
					Event.current.Use();
					EditorGUIUtility.SetWantsMouseJumping(1);
					InspectorWindow.RepaintAllInspectors();
				}
				break;
			case EventType.MouseUp:
				if (GUIUtility.hotControl == this.m_EffectInteractionControlID && current.button == 0 && p.stripRect.Contains(current.mousePosition))
				{
					if (this.m_MovingEffectDstIndex != -1 && this.m_MovingEffectAllowed)
					{
						if (this.IsDuplicateKeyPressed() && this.CanDuplicateDraggedEffect())
						{
							AudioMixerEffectController sourceEffect = this.m_MovingSrcGroup.effects[this.m_MovingEffectSrcIndex];
							AudioMixerEffectController effect2 = this.m_MovingSrcGroup.controller.CopyEffect(sourceEffect);
							List<AudioMixerEffectController> list = this.m_MovingDstGroup.effects.ToList<AudioMixerEffectController>();
							if (AudioMixerController.InsertEffect(effect2, ref list, this.m_MovingEffectDstIndex))
							{
								this.m_MovingDstGroup.effects = list.ToArray();
							}
						}
						else
						{
							if (this.m_MovingSrcGroup == this.m_MovingDstGroup)
							{
								List<AudioMixerEffectController> list2 = this.m_MovingSrcGroup.effects.ToList<AudioMixerEffectController>();
								if (AudioMixerController.MoveEffect(ref list2, this.m_MovingEffectSrcIndex, ref list2, this.m_MovingEffectDstIndex))
								{
									this.m_MovingSrcGroup.effects = list2.ToArray();
								}
							}
							else
							{
								if (!this.m_MovingSrcGroup.effects[this.m_MovingEffectSrcIndex].IsAttenuation())
								{
									List<AudioMixerEffectController> list3 = this.m_MovingSrcGroup.effects.ToList<AudioMixerEffectController>();
									List<AudioMixerEffectController> list4 = this.m_MovingDstGroup.effects.ToList<AudioMixerEffectController>();
									if (AudioMixerController.MoveEffect(ref list3, this.m_MovingEffectSrcIndex, ref list4, this.m_MovingEffectDstIndex))
									{
										this.m_MovingSrcGroup.effects = list3.ToArray();
										this.m_MovingDstGroup.effects = list4.ToArray();
									}
								}
							}
						}
					}
					this.ClearEffectDragging(ref highlightEffectIndex);
					current.Use();
					EditorGUIUtility.SetWantsMouseJumping(0);
					GUIUtility.ExitGUI();
				}
				break;
			case EventType.MouseDrag:
				if (GUIUtility.hotControl == this.m_EffectInteractionControlID)
				{
					if (this.HasFocus() && this.m_WaitingForDragEvent)
					{
						this.m_ChangingWetMixIndex = -1;
						if (effectIndex < p.group.effects.Length)
						{
							if (Mathf.Abs(current.delta.y) > Mathf.Abs(current.delta.x))
							{
								this.m_MovingEffectSrcIndex = effectIndex;
								this.ClearFocus();
							}
							else
							{
								this.m_ChangingWetMixIndex = this.m_IndexCounter;
							}
						}
						this.m_WaitingForDragEvent = false;
					}
					if (this.IsMovingEffect() && p.stripRect.Contains(current.mousePosition))
					{
						float num = r.height * 0.5f;
						float num2 = (effectIndex != 0) ? 0f : (-num);
						float num3 = (effectIndex != p.group.effects.Length - 1) ? r.height : (r.height + num);
						float num4 = current.mousePosition.y - r.y;
						if (num4 >= num2 && num4 <= num3 && effectIndex < p.group.effects.Length)
						{
							int num5 = (num4 >= num) ? (effectIndex + 1) : effectIndex;
							if (num5 != this.m_MovingEffectDstIndex || this.m_MovingDstGroup != p.group)
							{
								this.m_MovingDstRect.x = r.x;
								this.m_MovingDstRect.width = r.width;
								this.m_MovingDstRect.y = ((num4 >= num) ? (r.y + r.height) : r.y) - 1f;
								this.m_MovingEffectDstIndex = num5;
								this.m_MovingDstGroup = p.group;
								this.m_MovingEffectAllowed = ((!this.m_MovingSrcGroup.effects[this.m_MovingEffectSrcIndex].IsAttenuation() || !(this.m_MovingSrcGroup != this.m_MovingDstGroup)) && !AudioMixerController.WillMovingEffectCauseFeedback(p.allGroups, this.m_MovingSrcGroup, this.m_MovingEffectSrcIndex, this.m_MovingDstGroup, num5, null) && (!this.IsDuplicateKeyPressed() || this.CanDuplicateDraggedEffect()));
							}
							current.Use();
						}
					}
					if (this.IsAdjustingWetMix() && this.HasFocus() && showLevel)
					{
						this.m_WaitingForDragEvent = false;
						float value = AudioMixerChannelStripView.kEffectScaleMouseDrag * HandleUtility.niceMouseDelta + level;
						float num6 = Mathf.Clamp(value, AudioMixerController.kMinVolume, AudioMixerController.kMaxEffect) - level;
						if (num6 != 0f)
						{
							Undo.RecordObject(this.m_Controller.TargetSnapshot, "Change effect level");
							if (effect.IsSend() && this.m_Controller.CachedSelection.Count > 1 && this.m_Controller.CachedSelection.Contains(p.group))
							{
								List<AudioMixerEffectController> list5 = new List<AudioMixerEffectController>();
								foreach (AudioMixerGroupController current2 in this.m_Controller.CachedSelection)
								{
									AudioMixerEffectController[] effects = current2.effects;
									for (int i = 0; i < effects.Length; i++)
									{
										AudioMixerEffectController audioMixerEffectController = effects[i];
										if (audioMixerEffectController.effectName == effect.effectName && audioMixerEffectController.sendTarget == effect.sendTarget)
										{
											list5.Add(audioMixerEffectController);
										}
									}
								}
								foreach (AudioMixerEffectController current3 in list5)
								{
									if (!current3.IsSend() || current3.sendTarget != null)
									{
										current3.SetValueForMixLevel(this.m_Controller, snapshot, Mathf.Clamp(current3.GetValueForMixLevel(this.m_Controller, snapshot) + num6, AudioMixerController.kMinVolume, AudioMixerController.kMaxEffect));
									}
								}
							}
							else
							{
								if (!effect.IsSend() || effect.sendTarget != null)
								{
									effect.SetValueForMixLevel(this.m_Controller, snapshot, Mathf.Clamp(level + num6, AudioMixerController.kMinVolume, AudioMixerController.kMaxEffect));
								}
							}
							InspectorWindow.RepaintAllInspectors();
						}
						current.Use();
					}
				}
				break;
			}
		}
		private void DoEffectList(AudioMixerChannelStripView.ChannelStripParams p, bool selected, ref int highlightEffectIndex, ref Dictionary<AudioMixerEffectController, AudioMixerChannelStripView.PatchSlot> patchslots, bool showBusConnectionsOfSelection)
		{
			Event current = Event.current;
			for (int i = 0; i < p.maxEffects; i++)
			{
				Rect rect = p.bgRects[p.kEffectStartIndex + i];
				if (i < p.group.effects.Length)
				{
					AudioMixerEffectController effect = p.group.effects[i];
					if (p.visible)
					{
						if (current.type == EventType.ContextClick && rect.Contains(Event.current.mousePosition))
						{
							this.ClearFocus();
							this.DoEffectSlotInsertEffectPopup(rect, p.group, p.allGroups, i, ref p.effectMap);
							current.Use();
						}
						this.EffectSlot(rect, this.m_Controller.TargetSnapshot, effect, i, ref highlightEffectIndex, p, ref patchslots);
					}
				}
			}
			if (p.visible)
			{
				Rect rect2 = p.bgRects[p.bgRects.Count - 1];
				if (current.type == EventType.Repaint)
				{
					GUI.DrawTextureWithTexCoords(new Rect(rect2.x, rect2.y, rect2.width, rect2.height - 1f), this.styles.effectBar.hover.background, new Rect(0f, 0.5f, 0.1f, 0.1f));
					GUI.Label(rect2, this.addText, this.styles.effectName);
				}
				if (current.type == EventType.MouseDown && rect2.Contains(Event.current.mousePosition))
				{
					this.ClearFocus();
					int effectSlotIndex = p.group.effects.Length;
					this.DoEffectSlotInsertEffectPopup(rect2, p.group, p.allGroups, effectSlotIndex, ref p.effectMap);
					current.Use();
				}
			}
		}
		private void Init()
		{
			if (this.m_Initialized)
			{
				return;
			}
			if (this.m_LayoutStripsOnTop == null)
			{
				this.m_LayoutStripsOnTop = new AudioMixerWindow.Layout();
			}
			if (this.m_LayoutStripsOnTop.m_VerticalSplitter == null || this.m_LayoutStripsOnTop.m_VerticalSplitter.realSizes.Length != 2)
			{
				this.m_LayoutStripsOnTop.m_VerticalSplitter = new SplitterState(new int[]
				{
					65,
					35
				}, new int[]
				{
					85,
					105
				}, null);
			}
			if (this.m_LayoutStripsOnTop.m_HorizontalSplitter == null || this.m_LayoutStripsOnTop.m_HorizontalSplitter.realSizes.Length != 4)
			{
				this.m_LayoutStripsOnTop.m_HorizontalSplitter = new SplitterState(new int[]
				{
					60,
					60,
					60,
					60
				}, new int[]
				{
					85,
					85,
					85,
					85
				}, null);
			}
			if (this.m_LayoutStripsOnRight == null)
			{
				this.m_LayoutStripsOnRight = new AudioMixerWindow.Layout();
			}
			if (this.m_LayoutStripsOnRight.m_HorizontalSplitter == null || this.m_LayoutStripsOnRight.m_HorizontalSplitter.realSizes.Length != 2)
			{
				this.m_LayoutStripsOnRight.m_HorizontalSplitter = new SplitterState(new int[]
				{
					30,
					70
				}, new int[]
				{
					160,
					160
				}, null);
			}
			if (this.m_LayoutStripsOnRight.m_VerticalSplitter == null || this.m_LayoutStripsOnRight.m_VerticalSplitter.realSizes.Length != 4)
			{
				this.m_LayoutStripsOnRight.m_VerticalSplitter = new SplitterState(new int[]
				{
					60,
					60,
					60,
					60
				}, new int[]
				{
					100,
					85,
					85,
					85
				}, null);
			}
			if (this.m_AudioGroupTreeState == null)
			{
				this.m_AudioGroupTreeState = new TreeViewState();
			}
			this.m_GroupTree = new AudioMixerGroupTreeView(this, this.m_AudioGroupTreeState);
			if (this.m_MixersTreeState == null)
			{
				this.m_MixersTreeState = new TreeViewState();
			}
			this.m_MixersTree = new AudioMixersTreeView(this, this.m_MixersTreeState, new Func<List<AudioMixerController>>(this.GetAllControllers));
			if (this.m_ViewsState == null)
			{
				this.m_ViewsState = new ReorderableListWithRenameAndScrollView.State();
			}
			this.m_GroupViews = new AudioMixerGroupViewList(this.m_ViewsState);
			if (this.m_SnapshotState == null)
			{
				this.m_SnapshotState = new ReorderableListWithRenameAndScrollView.State();
			}
			this.m_SnapshotListView = new AudioMixerSnapshotListView(this.m_SnapshotState);
			if (this.m_ChannelStripViewState == null)
			{
				this.m_ChannelStripViewState = new AudioMixerChannelStripView.State();
			}
			this.m_ChannelStripView = new AudioMixerChannelStripView(this.m_ChannelStripViewState);
			this.OnMixerControllerChanged();
			this.m_Initialized = true;
		}
 private void DoTotaldB(AudioMixerChannelStripView.ChannelStripParams p)
 {
   float num1 = 50f;
   this.styles.totalVULevel.padding.right = (int) (((double) p.stripRect.width - (double) num1) * 0.5);
   float num2 = Mathf.Max(p.vuinfo_level[8], -80f);
   GUI.Label(p.bgRects[p.kTotalVULevelIndex], string.Format("{0:F1} dB", (object) num2), this.styles.totalVULevel);
 }