void OnAudioEnded(AudioGroup group, int sampleTime) { if (curMusic == group) { Debug.Log("Audio ended!"); if (AutoLoop) { transMusic = curMusic; transMusicTime = 0; Debug.Log("Looping Music!"); } if (sampleTime != curMusicTime) { PerformChoreographyForTimeSlice(curMusic, curMusicTime + 1, sampleTime); } // Save some time if we're simply replaying the previous music. if (curMusic != transMusic) { group.UnregisterKoreography(); // Clean out Koreography linkages. group.ClearLayerData(); // Free up some space. } // Make sure we've loaded the new Koreography. if (transMusic != null && !transMusic.IsKoreographyRegistered()) { transMusic.RegisterKoreography(); } curMusic = transMusic; transMusic = null; curMusicTime = transMusicTime - 1; // -1 to get the initial sample. transMusicTime = 0; // Trigger the callback! if (MusicEnded != null) { MusicEnded(group); } if (AutoLoop) { AudioGroup groupToTrigger = curMusic; curMusic = null; //hack to ensure it actually plays now! ScheduleNextMusic(groupToTrigger); } } else { Debug.LogWarning("Unexpected music has completed playback."); } }