public static void Cleanup(CleanupVerbose verbose = CleanupVerbose.Normal) { int deletedTotal = 0; int nodesDeleted = Cleanup(InAudioInstanceFinder.DataManager.AudioTree); if (nodesDeleted > 0 && verbose == CleanupVerbose.Normal) { Debug.Log("Deleted " + nodesDeleted + " Unused Audio Nodes"); } deletedTotal += nodesDeleted; nodesDeleted = Cleanup(InAudioInstanceFinder.DataManager.EventTree); if (nodesDeleted > 0 && verbose == CleanupVerbose.Normal) { Debug.Log("Deleted " + nodesDeleted + " Unused Event Nodes"); } deletedTotal += nodesDeleted; nodesDeleted = Cleanup(InAudioInstanceFinder.DataManager.MusicTree); if (nodesDeleted > 0 && verbose == CleanupVerbose.Normal) { Debug.Log("Deleted " + nodesDeleted + " Unused Music Nodes"); } deletedTotal += nodesDeleted; if (deletedTotal == 0 && verbose == CleanupVerbose.Normal) { Debug.Log("Nothing to clean up"); } }
public static void Cleanup(CleanupVerbose verbose = CleanupVerbose.Normal) { int deletedTotal = 0; var audioRoot = InAudioInstanceFinder.DataManager.AudioTree; //Audio node cleanup Action <InAudioNode, HashSet <MonoBehaviour> > action = null; action = (node, set) => { set.Add(node); if (node.NodeData != null) { set.Add(node.NodeData); } for (int i = 0; i < node.Children.Count; ++i) { action(node.Children[i], set); } }; int nodesDeleted = Cleanup(audioRoot, action); if (nodesDeleted > 0 && verbose == CleanupVerbose.Normal) { Debug.Log("Deleted " + nodesDeleted + " Unused Audio Nodes"); } deletedTotal += nodesDeleted; var eventRoot = InAudioInstanceFinder.DataManager.EventTree; //Audio node cleanup Action <InAudioEventNode, HashSet <MonoBehaviour> > eventAction = null; eventAction = (node, set) => { set.Add(node); for (int i = 0; i < node.ActionList.Count; ++i) { set.Add(node.ActionList[i]); } for (int i = 0; i < node.Children.Count; ++i) { eventAction(node.Children[i], set); } }; nodesDeleted = Cleanup(eventRoot, eventAction); if (nodesDeleted > 0 && verbose == CleanupVerbose.Normal) { Debug.Log("Deleted " + nodesDeleted + " Unused Event Nodes"); } deletedTotal += nodesDeleted; var busRoot = InAudioInstanceFinder.DataManager.BusTree; //Audio node cleanup Action <InAudioBus, HashSet <MonoBehaviour> > busAction = null; busAction = (node, set) => { set.Add(node); for (int i = 0; i < node.Children.Count; ++i) { busAction(node.Children[i], set); } }; nodesDeleted = Cleanup(busRoot, busAction); if (nodesDeleted > 0 && verbose == CleanupVerbose.Normal) { Debug.Log("Deleted " + nodesDeleted + " Unused Bus Nodes"); } deletedTotal += nodesDeleted; nodesDeleted = DeleteUnusedBanks(InAudioInstanceFinder.DataManager.BankLinkTree); if (nodesDeleted > 0 && verbose == CleanupVerbose.Normal) { Debug.Log("Deleted " + nodesDeleted + " Unused Audio Banks"); } deletedTotal += nodesDeleted; if (deletedTotal == 0 && verbose == CleanupVerbose.Normal) { Debug.Log("Nothing to clean up"); } }