private void ActualPlay(BgmPlayListTrack track) { m_RightSource.clip = track.m_clip; m_RightSource.loop = false; // we do not use looping feature of sound source, instead we manually replay the bgm m_CrossfadeTime = track.m_crossfadeTime; m_BgmCrossfader = 0.0f; m_isStopped = false; m_hasChangeRequest = true; }
// This plays a single music clip for playback. (This is implemented as playing // a playlist with a single track inside) public void Play(AudioClip clip, bool loop = true, float crossfadeTime = 0.0f) { // create single track playlist BgmPlayListTrack track = new BgmPlayListTrack(); track.m_clip = clip; track.m_crossfadeTime = crossfadeTime; List <BgmPlayListTrack> playlist = new List <BgmPlayListTrack>(); playlist.Add(track); m_playlist = playlist; m_trackNumber = -1; m_isLooping = loop; PlayNextTrack(); }
// A helper function that creates and returns a playlist from a given string array of sound ids. public List <BgmPlayListTrack> CreatePlaylist(string[] ids, float crossfadeTime = 0.0f) { if (ids == null) { return(null); } List <BgmPlayListTrack> playlist = new List <BgmPlayListTrack>(); foreach (string id in ids) { if (m_library.ContainsKey(id)) { BgmPlayListTrack track = new BgmPlayListTrack(); track.m_clip = m_library[id].AudioClipFile; track.m_crossfadeTime = crossfadeTime; playlist.Add(track); } } return(playlist); }
private bool IsPlaylistIdentical(ref List <BgmPlayListTrack> playlist, bool contentwiseCheck = false) { if (!contentwiseCheck) { return(playlist == m_playlist); } if (playlist.Count != m_playlist.Count) { return(false); } for (int i = 0; i < playlist.Count; ++i) { BgmPlayListTrack track = playlist[i]; if (track.m_clip != m_playlist[i].m_clip || track.m_crossfadeTime != m_playlist[i].m_crossfadeTime) { return(false); } } return(true); }