示例#1
0
        public static void Duplicate(InAudioNode audioNode)
        {
            UndoHelper.DoInGroup(() =>
            {
                List <Object> toUndo = TreeWalker.FindAll(audioNode, node => node.GetBank().LazyBankFetch).ConvertList <InAudioBank, Object>();

                toUndo.Add(audioNode.Parent);
                toUndo.Add(audioNode.GetBank());

                UndoHelper.RecordObjectFull(toUndo.ToArray(), "Undo Duplication Of " + audioNode.Name);

                if (audioNode.Parent.Type == AudioNodeType.Random)
                {
                    (audioNode.Parent.NodeData as RandomData).weights.Add(50);
                }
                NodeWorker.DuplicateHierarchy(audioNode, (@oldNode, newNode) =>
                {
                    var gameObject = audioNode.gameObject;
                    if (oldNode.NodeData != null)
                    {
                        Type type        = oldNode.NodeData.GetType();
                        newNode.NodeData = gameObject.AddComponentUndo(type) as InAudioNodeBaseData;
                        EditorUtility.CopySerialized(oldNode.NodeData, newNode.NodeData);
                        if (newNode.Type == AudioNodeType.Audio)
                        {
                            AudioBankWorker.AddNodeToBank(newNode, (oldNode.NodeData as InAudioData).EditorClip);
                        }
                    }
                });
            });
        }
示例#2
0
        private static void DeleteNodeRec(InAudioNode node)
        {
            AudioBankWorker.RemoveNodeFromBank(node);

            /*TreeWalker.ForEach(InAudioInstanceFinder.DataManager.EventTree, @event =>
             * {
             *  for (int i = 0; i < @event.ActionList.Count; i++)
             *  {
             *      var action = @event.ActionList[i];
             *      if (action.Target == node)
             *      {
             *          UndoHelper.RegisterFullObjectHierarchyUndo(action);
             *      }
             *  }
             * });*/

            for (int i = 0; i < node.Children.Count; i++)
            {
                DeleteNodeRec(node.Children[i]);
            }


            UndoHelper.Destroy(node.NodeData);
            UndoHelper.Destroy(node);
        }
示例#3
0
        public static void ConvertNodeType(InAudioNode node, AudioNodeType newType)
        {
            if (newType == node.Type)
            {
                return;
            }
            UndoHelper.DoInGroup(() =>
            {
                UndoHelper.RecordObjectFull(new Object[] { node, node.NodeData }, "Change Node Type");

                AudioBankWorker.RemoveNodeFromBank(node);

                node.Type = newType;
                UndoHelper.Destroy(node.NodeData);
                AddDataClass(node);
            });
        }