public static void RebuildBanks(InAudioBankLink rootBank, InAudioNode root) { SystemFolderHelper.CreateIfMissing(FolderSettings.BankCreateFolder); TreeWalker.ForEach(rootBank, CreateIfMissing); TreeWalker.ForEach(rootBank, DeleteAllNodesFromBanks); TreeWalker.ForEach(root, node => { var folderData = node.NodeData as InFolderData; if (folderData != null && folderData.BankLink == null) { folderData.BankLink = rootBank; } }); TreeWalker.ForEach(root, AddNodesToBank); //Set the bank of the root node if it is missing InFolderData inFolderData = root.NodeData as InFolderData; if (inFolderData != null && inFolderData.BankLink == null) { inFolderData.BankLink = TreeWalker.FindFirst(rootBank, link => link.Type == AudioBankTypes.Link); } if (inFolderData.BankLink != null) { TreeWalker.ForEach(root, SetBanks); } }
public static void ChangeBankOverride(InAudioNode node, InAudioBankLink rootBank, InAudioNode root) { var all = TreeWalker.FindAll(rootBank, link => link.Type == AudioBankTypes.Link ? link.LazyBankFetch : null); UndoHelper.RecordObject(all.ToArray().AddObj(node.NodeData), "Changed Bank"); InFolderData data = (node.NodeData as InFolderData); data.OverrideParentBank = !data.OverrideParentBank; RebuildBanks(rootBank, root); }
private static void SetBanks(InAudioNode node) { if (node.IsRootOrFolder) { InFolderData inFolderData = (node.NodeData as InFolderData); if (inFolderData != null) { if (inFolderData.BankLink == null) { inFolderData.BankLink = node.GetBank(); } } } }
public static void AddNewParent(InAudioNode node, AudioNodeType parentType) { UndoHelper.RecordObject(new Object[] { node, node.Parent, node.GetBankDirect() }, "Undo Add New Parent for " + node.Name); var newParent = CreateNode(node.gameObject, node.Parent, parentType); var oldParent = node.Parent; newParent.Bus = node.Bus; newParent.FoldedOut = true; if (node.Type == AudioNodeType.Folder) { InFolderData data = (InFolderData)newParent.NodeData; data.BankLink = oldParent.GetBank(); } int index = oldParent.Children.FindIndex(node); NodeWorker.RemoveFromParent(node); node.AssignParent(newParent); OnRandomNode(newParent); NodeWorker.RemoveFromParent(newParent); oldParent.Children.Insert(index, newParent); }