public static void DeleteTrack(this CachedMusicTree cachedTree, NoteTrackDefinition def) { var trackDefs = cachedTree.Asset.trackDefinitions; int index = trackDefs.IndexOf(def); if (index == -1) { throw new Exception("Track def is not owned by tree"); } foreach (var cueNode in cachedTree.AllCues) { cueNode.Tracks.RemoveAt(index); } trackDefs.RemoveAt(index); }
public static void CreateTrack(this CachedMusicTree cachedTree, string name) { var trackDefs = cachedTree.Asset.trackDefinitions; trackDefs.Add(new NoteTrackDefinition() { name = name }); foreach (var cueNode in cachedTree.AllCues) { cueNode.sheet.tracks.Add(new NoteTrack() { name = name, notes = new List <Note>() }); UnityEngine.Debug.Assert(cueNode.Tracks.Count == trackDefs.Count); } }
public AmusiEngine(MusicTreeAsset musicTree, AudioSource[] audioSources) { this.musicTree = musicTree; Instance = this; if (InstanceChanged != null) { InstanceChanged(); } InitializeMusicController(audioSources); counter = new BeatCounter(); musicTreeRuntime = CachedMusicTree.CreateFrom(musicTree); checker = new NoteEventChecker(musicTreeRuntime); PrepareFirstMusicCue(musicTree); }