示例#1
0
        public void OnTreeViewContextClick(int index)
        {
            TreeViewItem node = this.m_AudioGroupTree.FindNode(index);

            if (node == null)
            {
                return;
            }
            AudioMixerTreeViewNode mixerTreeViewNode = node as AudioMixerTreeViewNode;

            if (mixerTreeViewNode == null || !((UnityEngine.Object)mixerTreeViewNode.group != (UnityEngine.Object)null))
            {
                return;
            }
            GenericMenu genericMenu = new GenericMenu();

            if (!EditorApplication.isPlaying)
            {
                genericMenu.AddItem(new GUIContent("Add child group"), false, new GenericMenu.MenuFunction2(this.AddChildGroupPopupCallback), (object)new AudioMixerGroupPopupContext(this.m_Controller, mixerTreeViewNode.group));
                if ((UnityEngine.Object)mixerTreeViewNode.group != (UnityEngine.Object) this.m_Controller.masterGroup)
                {
                    genericMenu.AddItem(new GUIContent("Add sibling group"), false, new GenericMenu.MenuFunction2(this.AddSiblingGroupPopupCallback), (object)new AudioMixerGroupPopupContext(this.m_Controller, mixerTreeViewNode.group));
                    genericMenu.AddSeparator(string.Empty);
                    genericMenu.AddItem(new GUIContent("Rename"), false, new GenericMenu.MenuFunction2(this.RenameGroupCallback), (object)node);
                    AudioMixerGroupController[] array = this.GetGroupSelectionWithoutMasterGroup().ToArray();
                    genericMenu.AddItem(new GUIContent(array.Length <= 1 ? "Duplicate group (and children)" : "Duplicate groups (and children)"), false, new GenericMenu.MenuFunction2(this.DuplicateGroupPopupCallback), (object)this);
                    genericMenu.AddItem(new GUIContent(array.Length <= 1 ? "Remove group (and children)" : "Remove groups (and children)"), false, new GenericMenu.MenuFunction2(this.DeleteGroupsPopupCallback), (object)this);
                }
            }
            else
            {
                genericMenu.AddDisabledItem(new GUIContent("Modifying group topology in play mode is not allowed"));
            }
            genericMenu.ShowAsContext();
        }
示例#2
0
        private void OnNodeToggled(AudioMixerTreeViewNode node, bool nodeWasEnabled)
        {
            List <AudioMixerGroupController> mixerGroupControllerList = this.GetAudioMixerGroupsFromNodeIDs(this.m_AudioGroupTree.GetSelection());

            if (!mixerGroupControllerList.Contains(node.group))
            {
                mixerGroupControllerList = new List <AudioMixerGroupController>()
                {
                    node.group
                }
            }
            ;
            List <GUID> guidList = new List <GUID>();

            using (List <AudioMixerGroupController> .Enumerator enumerator = this.m_Controller.GetAllAudioGroupsSlow().GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    AudioMixerGroupController current = enumerator.Current;
                    bool flag1 = this.m_Controller.CurrentViewContainsGroup(current.groupID);
                    bool flag2 = mixerGroupControllerList.Contains(current);
                    bool flag3 = flag1 && !flag2;
                    if (!flag1 && flag2)
                    {
                        flag3 = nodeWasEnabled;
                    }
                    if (flag3)
                    {
                        guidList.Add(current.groupID);
                    }
                }
            }
            this.m_Controller.SetCurrentViewVisibility(guidList.ToArray());
        }
        public void OnTreeViewContextClick(int index)
        {
            TreeViewItem treeViewItem = this.m_AudioGroupTree.FindItem(index);

            if (treeViewItem != null)
            {
                AudioMixerTreeViewNode audioMixerTreeViewNode = treeViewItem as AudioMixerTreeViewNode;
                if (audioMixerTreeViewNode != null && audioMixerTreeViewNode.group != null)
                {
                    GenericMenu genericMenu = new GenericMenu();
                    if (!EditorApplication.isPlaying)
                    {
                        genericMenu.AddItem(EditorGUIUtility.TrTextContent("Add child group", null, null), false, new GenericMenu.MenuFunction2(this.AddChildGroupPopupCallback), new AudioMixerGroupPopupContext(this.m_Controller, audioMixerTreeViewNode.group));
                        if (audioMixerTreeViewNode.group != this.m_Controller.masterGroup)
                        {
                            genericMenu.AddItem(EditorGUIUtility.TrTextContent("Add sibling group", null, null), false, new GenericMenu.MenuFunction2(this.AddSiblingGroupPopupCallback), new AudioMixerGroupPopupContext(this.m_Controller, audioMixerTreeViewNode.group));
                            genericMenu.AddSeparator("");
                            genericMenu.AddItem(EditorGUIUtility.TrTextContent("Rename", null, null), false, new GenericMenu.MenuFunction2(this.RenameGroupCallback), treeViewItem);
                            AudioMixerGroupController[] array = this.GetGroupSelectionWithoutMasterGroup().ToArray();
                            genericMenu.AddItem(new GUIContent((array.Length <= 1) ? "Duplicate group (and children)" : "Duplicate groups (and children)"), false, new GenericMenu.MenuFunction2(this.DuplicateGroupPopupCallback), this);
                            genericMenu.AddItem(new GUIContent((array.Length <= 1) ? "Remove group (and children)" : "Remove groups (and children)"), false, new GenericMenu.MenuFunction2(this.DeleteGroupsPopupCallback), this);
                        }
                    }
                    else
                    {
                        genericMenu.AddDisabledItem(EditorGUIUtility.TrTextContent("Modifying group topology in play mode is not allowed", null, null));
                    }
                    genericMenu.ShowAsContext();
                }
            }
        }
示例#4
0
        protected override void RenameEnded()
        {
            bool userAcceptedRename = base.GetRenameOverlay().userAcceptedRename;

            if (userAcceptedRename)
            {
                string name     = (!string.IsNullOrEmpty(base.GetRenameOverlay().name)) ? base.GetRenameOverlay().name : base.GetRenameOverlay().originalName;
                int    userData = base.GetRenameOverlay().userData;
                AudioMixerTreeViewNode audioMixerTreeViewNode = this.m_TreeView.FindNode(userData) as AudioMixerTreeViewNode;
                if (audioMixerTreeViewNode != null)
                {
                    ObjectNames.SetNameSmartWithInstanceID(userData, name);
                    AudioMixerEffectController[] effects = audioMixerTreeViewNode.group.effects;
                    for (int i = 0; i < effects.Length; i++)
                    {
                        AudioMixerEffectController audioMixerEffectController = effects[i];
                        audioMixerEffectController.ClearCachedDisplayName();
                    }
                    this.m_TreeView.ReloadData();
                    if (this.m_Controller != null)
                    {
                        this.m_Controller.OnSubAssetChanged();
                    }
                }
            }
        }
示例#5
0
        public void OnTreeViewContextClick(int index)
        {
            var node = m_AudioGroupTree.FindItem(index);

            if (node != null)
            {
                AudioMixerTreeViewNode mixerNode = node as AudioMixerTreeViewNode;
                if (mixerNode != null && mixerNode.group != null)
                {
                    GenericMenu pm = new GenericMenu();

                    if (!EditorApplication.isPlaying)
                    {
                        pm.AddItem(EditorGUIUtility.TrTextContent("Add child group"), false, AddChildGroupPopupCallback, new AudioMixerGroupPopupContext(m_Controller, mixerNode.group));
                        if (mixerNode.group != m_Controller.masterGroup)
                        {
                            pm.AddItem(EditorGUIUtility.TrTextContent("Add sibling group"), false, AddSiblingGroupPopupCallback, new AudioMixerGroupPopupContext(m_Controller, mixerNode.group));
                            pm.AddSeparator("");
                            pm.AddItem(EditorGUIUtility.TrTextContent("Rename"), false, RenameGroupCallback, node);

                            // Mastergroup cannot be deleted nor duplicated
                            var selection = GetGroupSelectionWithoutMasterGroup().ToArray();
                            pm.AddItem(new GUIContent((selection.Length > 1) ? "Duplicate groups (and children)" : "Duplicate group (and children)"), false, DuplicateGroupPopupCallback, this);
                            pm.AddItem(new GUIContent((selection.Length > 1) ? "Remove groups (and children)" : "Remove group (and children)"), false, DeleteGroupsPopupCallback, this);
                        }
                    }
                    else
                    {
                        pm.AddDisabledItem(EditorGUIUtility.TrTextContent("Modifying group topology in play mode is not allowed"));
                    }

                    pm.ShowAsContext();
                }
            }
        }
        private void OnNodeToggled(AudioMixerTreeViewNode node, bool nodeWasEnabled)
        {
            List <AudioMixerGroupController> list = this.GetAudioMixerGroupsFromNodeIDs(this.m_AudioGroupTree.GetSelection());

            if (!list.Contains(node.group))
            {
                list = new List <AudioMixerGroupController>
                {
                    node.group
                };
            }
            List <GUID> list2 = new List <GUID>();
            List <AudioMixerGroupController> allAudioGroupsSlow = this.m_Controller.GetAllAudioGroupsSlow();

            foreach (AudioMixerGroupController current in allAudioGroupsSlow)
            {
                bool flag  = this.m_Controller.CurrentViewContainsGroup(current.groupID);
                bool flag2 = list.Contains(current);
                bool flag3 = flag && !flag2;
                if (!flag && flag2)
                {
                    flag3 = nodeWasEnabled;
                }
                if (flag3)
                {
                    list2.Add(current.groupID);
                }
            }
            this.m_Controller.SetCurrentViewVisibility(list2.ToArray());
        }
        private void OpenGroupContextMenu(AudioMixerTreeViewNode audioNode, bool visible)
        {
            GenericMenu genericMenu = new GenericMenu();

            if (this.NodeWasToggled != null)
            {
                genericMenu.AddItem(new GUIContent((!visible) ? "Show Group" : "Hide group"), false, delegate
                {
                    this.NodeWasToggled(audioNode, !visible);
                });
            }
            genericMenu.AddSeparator(string.Empty);
            AudioMixerGroupController[] groups;
            if (this.m_Controller.CachedSelection.Contains(audioNode.group))
            {
                groups = this.m_Controller.CachedSelection.ToArray();
            }
            else
            {
                groups = new AudioMixerGroupController[]
                {
                    audioNode.group
                };
            }
            AudioMixerColorCodes.AddColorItemsToGenericMenu(genericMenu, groups);
            genericMenu.ShowAsContext();
        }
示例#8
0
        public override DragAndDropVisualMode DoDrag(TreeViewItem parentNode, TreeViewItem targetNode, bool perform, TreeViewDragging.DropPosition dragPos)
        {
            AudioMixerTreeViewNode           audioMixerTreeViewNode = parentNode as AudioMixerTreeViewNode;
            List <AudioMixerGroupController> list = new List <UnityEngine.Object>(DragAndDrop.objectReferences).OfType <AudioMixerGroupController>().ToList <AudioMixerGroupController>();
            DragAndDropVisualMode            result;

            if (audioMixerTreeViewNode != null && list.Count > 0)
            {
                List <int> list2 = (from i in list
                                    select i.GetInstanceID()).ToList <int>();
                bool flag = this.ValidDrag(parentNode, list2) && !AudioMixerController.WillModificationOfTopologyCauseFeedback(this.m_owner.Controller.GetAllAudioGroupsSlow(), list, audioMixerTreeViewNode.group, null);
                if (perform && flag)
                {
                    AudioMixerGroupController group = audioMixerTreeViewNode.group;
                    int insertionIndex = TreeViewDragging.GetInsertionIndex(parentNode, targetNode, dragPos);
                    this.m_owner.Controller.ReparentSelection(group, insertionIndex, list);
                    this.m_owner.ReloadTree();
                    this.m_TreeView.SetSelection(list2.ToArray(), true);
                }
                result = ((!flag) ? DragAndDropVisualMode.Rejected : DragAndDropVisualMode.Move);
            }
            else
            {
                result = DragAndDropVisualMode.None;
            }
            return(result);
        }
示例#9
0
        protected override void RenameEnded()
        {
            if (!this.GetRenameOverlay().userAcceptedRename)
            {
                return;
            }
            string name                 = !string.IsNullOrEmpty(this.GetRenameOverlay().name) ? this.GetRenameOverlay().name : this.GetRenameOverlay().originalName;
            int    userData             = this.GetRenameOverlay().userData;
            AudioMixerTreeViewNode node = this.m_TreeView.FindNode(userData) as AudioMixerTreeViewNode;

            if (node == null)
            {
                return;
            }
            ObjectNames.SetNameSmartWithInstanceID(userData, name);
            foreach (AudioMixerEffectController effect in node.group.effects)
            {
                effect.ClearCachedDisplayName();
            }
            this.m_TreeView.ReloadData();
            if (!((UnityEngine.Object) this.m_Controller != (UnityEngine.Object)null))
            {
                return;
            }
            this.m_Controller.OnSubAssetChanged();
        }
        public override DragAndDropVisualMode DoDrag(TreeViewItem parentNode, TreeViewItem targetNode, bool perform, TreeViewDragging.DropPosition dragPos)
        {
            AudioMixerTreeViewNode           node            = parentNode as AudioMixerTreeViewNode;
            List <AudioMixerGroupController> groupsToBeMoved = new List <Object>(DragAndDrop.objectReferences).OfType <AudioMixerGroupController>().ToList <AudioMixerGroupController>();

            if ((node != null) && (groupsToBeMoved.Count > 0))
            {
                if (< > f__am$cache0 == null)
                {
        public override bool IsRenamingItemAllowed(TreeViewItem node)
        {
            AudioMixerTreeViewNode node2 = node as AudioMixerTreeViewNode;

            if (node2.group == this.m_Controller.masterGroup)
            {
                return(false);
            }
            return(true);
        }
 private void AddNodesRecursively(AudioMixerGroupController group, TreeViewItem parent, int depth)
 {
   List<TreeViewItem> treeViewItemList = new List<TreeViewItem>();
   for (int index = 0; index < group.children.Length; ++index)
   {
     AudioMixerTreeViewNode mixerTreeViewNode = new AudioMixerTreeViewNode(AudioGroupDataSource.GetUniqueNodeID(group.children[index]), depth, parent, group.children[index].name, group.children[index]);
     mixerTreeViewNode.parent = parent;
     treeViewItemList.Add((TreeViewItem) mixerTreeViewNode);
     this.AddNodesRecursively(group.children[index], (TreeViewItem) mixerTreeViewNode, depth + 1);
   }
   parent.children = treeViewItemList;
 }
示例#13
0
        public override DragAndDropVisualMode DoDrag(TreeViewItem parentNode, TreeViewItem targetNode, bool perform, TreeViewDragging.DropPosition dragPos)
        {
            AudioMixerTreeViewNode           node   = targetNode as AudioMixerTreeViewNode;
            AudioMixerTreeViewNode           node2  = parentNode as AudioMixerTreeViewNode;
            List <AudioMixerGroupController> source = new List <Object>(DragAndDrop.objectReferences).OfType <AudioMixerGroupController>().ToList <AudioMixerGroupController>();

            if ((node2 == null) || (source.Count <= 0))
            {
                return(DragAndDropVisualMode.None);
            }
            if (< > f__am$cache1 == null)
            {
示例#14
0
        void OnNodeToggled(AudioMixerTreeViewNode node, bool nodeWasEnabled)
        {
            Undo.RecordObject(m_Controller, "Changed Group Visibility");
            var treeSelection = GetAudioMixerGroupsFromNodeIDs(m_AudioGroupTree.GetSelection());

            if (!treeSelection.Contains(node.group))
            {
                treeSelection = new List <AudioMixerGroupController> {
                    node.group
                }
            }
            ;
            var newSelection = new List <GUID>();
            var allGroups    = m_Controller.GetAllAudioGroupsSlow();

            foreach (var g in allGroups)
            {
                bool inOldSelection = m_Controller.CurrentViewContainsGroup(g.groupID);
                bool inNewSelection = treeSelection.Contains(g);
                bool add            = inOldSelection && !inNewSelection;
                if (!inOldSelection && inNewSelection)
                {
                    add = nodeWasEnabled;
                }
                if (add)
                {
                    newSelection.Add(g.groupID);
                }
            }

            m_Controller.SetCurrentViewVisibility(newSelection.ToArray());
        }

        List <AudioMixerGroupController> GetAudioMixerGroupsFromNodeIDs(int[] instanceIDs)
        {
            List <AudioMixerGroupController> newSelectedGroups = new List <AudioMixerGroupController>();

            foreach (var s in instanceIDs)
            {
                var node = m_AudioGroupTree.FindItem(s);
                if (node != null)
                {
                    AudioMixerTreeViewNode mixerNode = node as AudioMixerTreeViewNode;
                    if (mixerNode != null)
                    {
                        newSelectedGroups.Add(mixerNode.group);
                    }
                }
            }

            return(newSelectedGroups);
        }
 private void AddNodesRecursively(AudioMixerGroupController group, TreeViewItem parent, int depth)
 {
     List<TreeViewItem> list = new List<TreeViewItem>();
     for (int i = 0; i < group.children.Length; i++)
     {
         AudioMixerTreeViewNode item = new AudioMixerTreeViewNode(GetUniqueNodeID(group.children[i]), depth, parent, group.children[i].name, group.children[i]) {
             parent = parent
         };
         list.Add(item);
         this.AddNodesRecursively(group.children[i], item, depth + 1);
     }
     parent.children = list;
 }
        private void AddNodesRecursively(AudioMixerGroupController group, TreeViewItem parent, int depth)
        {
            List <TreeViewItem> treeViewItemList = new List <TreeViewItem>();

            for (int index = 0; index < group.children.Length; ++index)
            {
                AudioMixerTreeViewNode mixerTreeViewNode = new AudioMixerTreeViewNode(AudioGroupDataSource.GetUniqueNodeID(group.children[index]), depth, parent, group.children[index].name, group.children[index]);
                mixerTreeViewNode.parent = parent;
                treeViewItemList.Add((TreeViewItem)mixerTreeViewNode);
                this.AddNodesRecursively(group.children[index], (TreeViewItem)mixerTreeViewNode, depth + 1);
            }
            parent.children = treeViewItemList;
        }
		private void AddNodesRecursively(AudioMixerGroupController group, TreeViewItem parent, int depth)
		{
			List<TreeViewItem> list = new List<TreeViewItem>();
			for (int i = 0; i < group.children.Length; i++)
			{
				int uniqueNodeID = AudioGroupDataSource.GetUniqueNodeID(group.children[i]);
				AudioMixerTreeViewNode audioMixerTreeViewNode = new AudioMixerTreeViewNode(uniqueNodeID, depth, parent, group.children[i].name, group.children[i]);
				audioMixerTreeViewNode.parent = parent;
				list.Add(audioMixerTreeViewNode);
				this.AddNodesRecursively(group.children[i], audioMixerTreeViewNode, depth + 1);
			}
			parent.children = list;
		}
        public void AddSiblingGroupPopupCallback(object obj)
        {
            AudioMixerGroupPopupContext context = (AudioMixerGroupPopupContext)obj;

            if ((context.groups != null) && (context.groups.Length > 0))
            {
                AudioMixerTreeViewNode node = this.m_AudioGroupTree.FindNode(context.groups[0].GetInstanceID()) as AudioMixerTreeViewNode;
                if (node != null)
                {
                    AudioMixerTreeViewNode parent = node.parent as AudioMixerTreeViewNode;
                    this.AddAudioMixerGroup(parent.group);
                }
            }
        }
        public void AddSiblingGroupPopupCallback(object obj)
        {
            AudioMixerGroupPopupContext audioMixerGroupPopupContext = (AudioMixerGroupPopupContext)obj;

            if (audioMixerGroupPopupContext.groups != null && audioMixerGroupPopupContext.groups.Length > 0)
            {
                AudioMixerTreeViewNode audioMixerTreeViewNode = this.m_AudioGroupTree.FindItem(audioMixerGroupPopupContext.groups[0].GetInstanceID()) as AudioMixerTreeViewNode;
                if (audioMixerTreeViewNode != null)
                {
                    AudioMixerTreeViewNode audioMixerTreeViewNode2 = audioMixerTreeViewNode.parent as AudioMixerTreeViewNode;
                    this.AddAudioMixerGroup(audioMixerTreeViewNode2.group);
                }
            }
        }
        private void AddNodesRecursively(AudioMixerGroupController group, TreeViewItem parent, int depth)
        {
            var children = new List <TreeViewItem>();

            for (int i = 0; i < group.children.Length; ++i)
            {
                int uniqueNodeID = GetUniqueNodeID(group.children[i]);
                var node         = new AudioMixerTreeViewNode(uniqueNodeID, depth, parent, group.children[i].name, group.children[i]);
                node.parent = parent;
                children.Add(node);
                AddNodesRecursively(group.children[i], node, depth + 1);
            }
            parent.children = children;
        }
示例#21
0
        private void AddNodesRecursively(AudioMixerGroupController group, TreeViewItem parent, int depth)
        {
            List <TreeViewItem> list = new List <TreeViewItem>();

            for (int i = 0; i < group.children.Length; i++)
            {
                int uniqueNodeID = AudioGroupDataSource.GetUniqueNodeID(group.children[i]);
                AudioMixerTreeViewNode audioMixerTreeViewNode = new AudioMixerTreeViewNode(uniqueNodeID, depth, parent, group.children[i].name, group.children[i]);
                audioMixerTreeViewNode.parent = parent;
                list.Add(audioMixerTreeViewNode);
                this.AddNodesRecursively(group.children[i], audioMixerTreeViewNode, depth + 1);
            }
            parent.children = list;
        }
		private void OpenGroupContextMenu(AudioMixerTreeViewNode audioNode, bool visible)
		{
			GenericMenu genericMenu = new GenericMenu();
			if (this.NodeWasToggled != null)
			{
				genericMenu.AddItem(new GUIContent((!visible) ? "Show Group" : "Hide group"), false, delegate
				{
					this.NodeWasToggled(audioNode, !visible);
				});
			}
			genericMenu.AddSeparator(string.Empty);
			AudioMixerColorCodes.AddColorItemsToGenericMenu(genericMenu, audioNode.group);
			genericMenu.ShowAsContext();
		}
        private void AddNodesRecursively(AudioMixerGroupController group, TreeViewItem parent, int depth)
        {
            List <TreeViewItem> list = new List <TreeViewItem>();

            for (int i = 0; i < group.children.Length; i++)
            {
                AudioMixerTreeViewNode item = new AudioMixerTreeViewNode(GetUniqueNodeID(group.children[i]), depth, parent, group.children[i].name, group.children[i])
                {
                    parent = parent
                };
                list.Add(item);
                this.AddNodesRecursively(group.children[i], item, depth + 1);
            }
            parent.children = list;
        }
示例#24
0
        private void OpenGroupContextMenu(AudioMixerTreeViewNode audioNode, bool visible)
        {
            GenericMenu genericMenu = new GenericMenu();

            if (this.NodeWasToggled != null)
            {
                genericMenu.AddItem(new GUIContent((!visible) ? "Show Group" : "Hide group"), false, delegate
                {
                    this.NodeWasToggled(audioNode, !visible);
                });
            }
            genericMenu.AddSeparator(string.Empty);
            AudioMixerColorCodes.AddColorItemsToGenericMenu(genericMenu, audioNode.group);
            genericMenu.ShowAsContext();
        }
示例#25
0
        public void AddSiblingGroupPopupCallback(object obj)
        {
            AudioMixerGroupPopupContext groupPopupContext = (AudioMixerGroupPopupContext)obj;

            if (groupPopupContext.groups == null || groupPopupContext.groups.Length <= 0)
            {
                return;
            }
            AudioMixerTreeViewNode node = this.m_AudioGroupTree.FindNode(groupPopupContext.groups[0].GetInstanceID()) as AudioMixerTreeViewNode;

            if (node == null)
            {
                return;
            }
            this.AddAudioMixerGroup((node.parent as AudioMixerTreeViewNode).group);
        }
示例#26
0
        private List <AudioMixerGroupController> GetAudioMixerGroupsFromNodeIDs(int[] instanceIDs)
        {
            List <AudioMixerGroupController> mixerGroupControllerList = new List <AudioMixerGroupController>();

            foreach (int instanceId in instanceIDs)
            {
                TreeViewItem node = this.m_AudioGroupTree.FindNode(instanceId);
                if (node != null)
                {
                    AudioMixerTreeViewNode mixerTreeViewNode = node as AudioMixerTreeViewNode;
                    if (mixerTreeViewNode != null)
                    {
                        mixerGroupControllerList.Add(mixerTreeViewNode.group);
                    }
                }
            }
            return(mixerGroupControllerList);
        }
 private void HandleKeyboardEvents(int treeViewKeyboardControlID)
 {
     if (GUIUtility.keyboardControl == treeViewKeyboardControlID)
     {
         Event current = Event.current;
         if (current.keyCode == KeyCode.Space && current.type == EventType.KeyDown)
         {
             int[] selection = this.m_AudioGroupTree.GetSelection();
             if (selection.Length > 0)
             {
                 AudioMixerTreeViewNode audioMixerTreeViewNode = this.m_AudioGroupTree.FindItem(selection[0]) as AudioMixerTreeViewNode;
                 bool flag = this.m_Controller.CurrentViewContainsGroup(audioMixerTreeViewNode.group.groupID);
                 this.OnNodeToggled(audioMixerTreeViewNode, !flag);
                 current.Use();
             }
         }
     }
 }
        private List <AudioMixerGroupController> GetAudioMixerGroupsFromNodeIDs(int[] instanceIDs)
        {
            List <AudioMixerGroupController> list = new List <AudioMixerGroupController>();

            for (int i = 0; i < instanceIDs.Length; i++)
            {
                int          id           = instanceIDs[i];
                TreeViewItem treeViewItem = this.m_AudioGroupTree.FindItem(id);
                if (treeViewItem != null)
                {
                    AudioMixerTreeViewNode audioMixerTreeViewNode = treeViewItem as AudioMixerTreeViewNode;
                    if (audioMixerTreeViewNode != null)
                    {
                        list.Add(audioMixerTreeViewNode.group);
                    }
                }
            }
            return(list);
        }
示例#29
0
        public override void OnRowGUI(Rect rowRect, TreeViewItem node, int row, bool selected, bool focused)
        {
            Event current = Event.current;

            this.DoNodeGUI(rowRect, row, node, selected, focused, false);
            if ((UnityEngine.Object) this.m_Controller == (UnityEngine.Object)null)
            {
                return;
            }
            AudioMixerTreeViewNode audioNode = node as AudioMixerTreeViewNode;

            if (audioNode == null)
            {
                return;
            }
            bool  visible        = this.m_Controller.CurrentViewContainsGroup(audioNode.group.groupID);
            float num            = 3f;
            Rect  position       = new Rect(rowRect.x + num, rowRect.y, 16f, 16f);
            Rect  rect1          = new Rect(position.x + 1f, position.y + 1f, position.width - 2f, position.height - 2f);
            int   userColorIndex = audioNode.group.userColorIndex;

            if (userColorIndex > 0)
            {
                EditorGUI.DrawRect(new Rect(rowRect.x, rect1.y, 2f, rect1.height), AudioMixerColorCodes.GetColor(userColorIndex));
            }
            EditorGUI.DrawRect(rect1, new Color(0.5f, 0.5f, 0.5f, 0.2f));
            if (visible)
            {
                GUI.DrawTexture(position, (Texture)this.k_VisibleON);
            }
            Rect rect2 = new Rect(2f, rowRect.y, rowRect.height, rowRect.height);

            if (current.type == EventType.MouseUp && current.button == 0 && (rect2.Contains(current.mousePosition) && this.NodeWasToggled != null))
            {
                this.NodeWasToggled(audioNode, !visible);
            }
            if (current.type != EventType.ContextClick || !position.Contains(current.mousePosition))
            {
                return;
            }
            this.OpenGroupContextMenu(audioNode, visible);
            current.Use();
        }
示例#30
0
        public override Rect OnRowGUI(TreeViewItem node, int row, float rowWidth, bool selected, bool focused)
        {
            Event current = Event.current;
            Rect  rect    = new Rect(0f, (float)row * this.k_LineHeight + this.k_TopRowMargin, rowWidth, this.k_LineHeight);

            this.DoNodeGUI(rect, node, selected, focused, false);
            if (this.m_Controller == null)
            {
                return(rect);
            }
            AudioMixerTreeViewNode audioMixerTreeViewNode = node as AudioMixerTreeViewNode;

            if (audioMixerTreeViewNode != null)
            {
                bool  flag           = this.m_Controller.CurrentViewContainsGroup(audioMixerTreeViewNode.group.groupID);
                float num            = 3f;
                Rect  position       = new Rect(rect.x + num, rect.y, 16f, 16f);
                Rect  rect2          = new Rect(position.x + 1f, position.y + 1f, position.width - 2f, position.height - 2f);
                int   userColorIndex = audioMixerTreeViewNode.group.userColorIndex;
                if (userColorIndex > 0)
                {
                    EditorGUI.DrawRect(new Rect(rect.x, rect2.y, 2f, rect2.height), AudioMixerColorCodes.GetColor(userColorIndex));
                }
                EditorGUI.DrawRect(rect2, new Color(0.5f, 0.5f, 0.5f, 0.2f));
                if (flag)
                {
                    GUI.DrawTexture(position, this.k_VisibleON);
                }
                Rect rect3 = new Rect(2f, rect.y, rect.height, rect.height);
                if (current.type == EventType.MouseDown && current.button == 0 && rect3.Contains(current.mousePosition) && this.NodeWasToggled != null)
                {
                    this.NodeWasToggled(audioMixerTreeViewNode, !flag);
                }
                if (current.type == EventType.ContextClick && position.Contains(current.mousePosition))
                {
                    this.OpenGroupContextMenu(audioMixerTreeViewNode, flag);
                    current.Use();
                }
            }
            return(rect);
        }
示例#31
0
        public override DragAndDropVisualMode DoDrag(TreeViewItem parentNode, TreeViewItem targetNode, bool perform, TreeViewDragging.DropPosition dragPos)
        {
            AudioMixerTreeViewNode           mixerTreeViewNode1 = targetNode as AudioMixerTreeViewNode;
            AudioMixerTreeViewNode           mixerTreeViewNode2 = parentNode as AudioMixerTreeViewNode;
            List <AudioMixerGroupController> list1 = new List <UnityEngine.Object>((IEnumerable <UnityEngine.Object>)DragAndDrop.objectReferences).OfType <AudioMixerGroupController>().ToList <AudioMixerGroupController>();

            if (mixerTreeViewNode2 == null || list1.Count <= 0)
            {
                return(DragAndDropVisualMode.None);
            }
            List <int> list2 = list1.Select <AudioMixerGroupController, int>((Func <AudioMixerGroupController, int>)(i => i.GetInstanceID())).ToList <int>();
            bool       flag  = this.ValidDrag(parentNode, list2) && !AudioMixerController.WillModificationOfTopologyCauseFeedback(this.m_owner.Controller.GetAllAudioGroupsSlow(), list1, mixerTreeViewNode2.group, (List <AudioMixerController.ConnectionNode>)null);

            if (perform && flag)
            {
                this.m_owner.Controller.ReparentSelection(mixerTreeViewNode2.group, mixerTreeViewNode1.group, list1);
                this.m_owner.ReloadTree();
                this.m_TreeView.SetSelection(list2.ToArray(), true);
            }
            return(flag ? DragAndDropVisualMode.Move : DragAndDropVisualMode.Rejected);
        }
示例#32
0
        void HandleKeyboardEvents(int treeViewKeyboardControlID)
        {
            if (GUIUtility.keyboardControl != treeViewKeyboardControlID)
            {
                return;
            }

            Event evt = Event.current;

            if (evt.keyCode == KeyCode.Space && evt.type == EventType.KeyDown)
            {
                int[] selection = m_AudioGroupTree.GetSelection();
                if (selection.Length > 0)
                {
                    AudioMixerTreeViewNode node = m_AudioGroupTree.FindItem(selection[0]) as AudioMixerTreeViewNode;
                    bool shown = m_Controller.CurrentViewContainsGroup(node.group.groupID);
                    OnNodeToggled(node, !shown);
                    evt.Use();
                }
            }
        }
示例#33
0
        public override void FetchData()
        {
            if (m_Controller == null)
            {
                m_RootItem = null;
                return;
            }

            if (m_Controller.masterGroup == null)
            {
                Debug.LogError("The Master group is missing !!!");
                m_RootItem = null;
                return;
            }

            int uniqueNodeID = GetUniqueNodeID(m_Controller.masterGroup);

            m_RootItem = new AudioMixerTreeViewNode(uniqueNodeID, 0, null, m_Controller.masterGroup.name, m_Controller.masterGroup);
            AddNodesRecursively(m_Controller.masterGroup, m_RootItem, 1);
            m_NeedRefreshRows = true;
        }
        public override Rect OnRowGUI(TreeViewItem node, int row, float rowWidth, bool selected, bool focused)
        {
            Event current = Event.current;
            Rect  rect    = new Rect(0f, (row * base.k_LineHeight) + base.k_TopRowMargin, rowWidth, base.k_LineHeight);

            this.DoNodeGUI(rect, node, selected, focused, false);
            if (this.m_Controller != null)
            {
                AudioMixerTreeViewNode node2 = node as AudioMixerTreeViewNode;
                if (node2 == null)
                {
                    return(rect);
                }
                bool  visible        = this.m_Controller.CurrentViewContainsGroup(node2.group.groupID);
                float num2           = 3f;
                Rect  position       = new Rect(rect.x + num2, rect.y, 16f, 16f);
                Rect  rect3          = new Rect(position.x + 1f, position.y + 1f, position.width - 2f, position.height - 2f);
                int   userColorIndex = node2.group.userColorIndex;
                if (userColorIndex > 0)
                {
                    EditorGUI.DrawRect(new Rect(rect.x, rect3.y, 2f, rect3.height), AudioMixerColorCodes.GetColor(userColorIndex));
                }
                EditorGUI.DrawRect(rect3, new Color(0.5f, 0.5f, 0.5f, 0.2f));
                if (visible)
                {
                    GUI.DrawTexture(position, this.k_VisibleON);
                }
                Rect rect4 = new Rect(2f, rect.y, rect.height, rect.height);
                if (((current.type == EventType.MouseUp) && (current.button == 0)) && (rect4.Contains(current.mousePosition) && (this.NodeWasToggled != null)))
                {
                    this.NodeWasToggled(node2, !visible);
                }
                if ((current.type == EventType.ContextClick) && position.Contains(current.mousePosition))
                {
                    this.OpenGroupContextMenu(node2, visible);
                    current.Use();
                }
            }
            return(rect);
        }
 private void OpenGroupContextMenu(AudioMixerTreeViewNode audioNode, bool visible)
 {
   // ISSUE: object of a compiler-generated type is created
   // ISSUE: variable of a compiler-generated type
   AudioGroupTreeViewGUI.\u003COpenGroupContextMenu\u003Ec__AnonStorey64 menuCAnonStorey64 = new AudioGroupTreeViewGUI.\u003COpenGroupContextMenu\u003Ec__AnonStorey64();
   // ISSUE: reference to a compiler-generated field
   menuCAnonStorey64.audioNode = audioNode;
   // ISSUE: reference to a compiler-generated field
   menuCAnonStorey64.visible = visible;
   // ISSUE: reference to a compiler-generated field
   menuCAnonStorey64.\u003C\u003Ef__this = this;
   GenericMenu menu = new GenericMenu();
   if (this.NodeWasToggled != null)
   {
     // ISSUE: reference to a compiler-generated field
     // ISSUE: reference to a compiler-generated method
     menu.AddItem(new GUIContent(!menuCAnonStorey64.visible ? "Show Group" : "Hide group"), false, new GenericMenu.MenuFunction(menuCAnonStorey64.\u003C\u003Em__B2));
   }
   menu.AddSeparator(string.Empty);
   AudioMixerGroupController[] groups;
   // ISSUE: reference to a compiler-generated field
   if (this.m_Controller.CachedSelection.Contains(menuCAnonStorey64.audioNode.group))
   {
     groups = this.m_Controller.CachedSelection.ToArray();
   }
   else
   {
     // ISSUE: reference to a compiler-generated field
     groups = new AudioMixerGroupController[1]
     {
       menuCAnonStorey64.audioNode.group
     };
   }
   AudioMixerColorCodes.AddColorItemsToGenericMenu(menu, groups);
   menu.ShowAsContext();
 }
		private void OnNodeToggled(AudioMixerTreeViewNode node, bool nodeWasEnabled)
		{
			List<AudioMixerGroupController> list = this.GetAudioMixerGroupsFromNodeIDs(this.m_AudioGroupTree.GetSelection());
			if (!list.Contains(node.group))
			{
				list = new List<AudioMixerGroupController>
				{
					node.group
				};
			}
			List<GUID> list2 = new List<GUID>();
			List<AudioMixerGroupController> allAudioGroupsSlow = this.m_Controller.GetAllAudioGroupsSlow();
			foreach (AudioMixerGroupController current in allAudioGroupsSlow)
			{
				bool flag = this.m_Controller.CurrentViewContainsGroup(current.groupID);
				bool flag2 = list.Contains(current);
				bool flag3 = flag && !flag2;
				if (!flag && flag2)
				{
					flag3 = nodeWasEnabled;
				}
				if (flag3)
				{
					list2.Add(current.groupID);
				}
			}
			this.m_Controller.SetCurrentViewVisibility(list2.ToArray());
		}
 private void OnNodeToggled(AudioMixerTreeViewNode node, bool nodeWasEnabled)
 {
   List<AudioMixerGroupController> mixerGroupControllerList = this.GetAudioMixerGroupsFromNodeIDs(this.m_AudioGroupTree.GetSelection());
   if (!mixerGroupControllerList.Contains(node.group))
     mixerGroupControllerList = new List<AudioMixerGroupController>()
     {
       node.group
     };
   List<GUID> guidList = new List<GUID>();
   using (List<AudioMixerGroupController>.Enumerator enumerator = this.m_Controller.GetAllAudioGroupsSlow().GetEnumerator())
   {
     while (enumerator.MoveNext())
     {
       AudioMixerGroupController current = enumerator.Current;
       bool flag1 = this.m_Controller.CurrentViewContainsGroup(current.groupID);
       bool flag2 = mixerGroupControllerList.Contains(current);
       bool flag3 = flag1 && !flag2;
       if (!flag1 && flag2)
         flag3 = nodeWasEnabled;
       if (flag3)
         guidList.Add(current.groupID);
     }
   }
   this.m_Controller.SetCurrentViewVisibility(guidList.ToArray());
 }