/// <summary> /// Fades primary theme with secondary theme /// </summary> /// <param name="hash"></param> //public void PlaySecondaryMusic(string hash, bool loop = true, bool startsMuted = false, Vector3 position = default(Vector3)) //{ // //if (activeSecondaryMusicAudioSource.Source == null) // // BuildSecondaryMusicSource(); // //if (activeSecondaryMusicAudioSource.clip == musicList[hash]) // // return; // //get music object, set the audio clip to it and save reference // AudioSerial audioToPlay = musicList[hash]; // activeSecondaryMusicAudioSource.Source.Stop(); // activeSecondaryMusicAudioSource.Source.clip = audioToPlay.source; // activeSecondaryMusicAudioSource.Source.priority = 0; // activeSecondaryMusicAudioSource.Source.volume = startsMuted ? 0 : musicVolume * audioToPlay._relativeVolume; // activeSecondaryMusicAudioSource.Source.loop = loop; // activeSecondaryMusicAudioSource.Source.maxDistance = maxHearingDistance; // activeSecondaryMusicAudioSource.Source.Play(); // //Debug.Log("Playing secondary"); // activeSecondaryMusicAudioHash = hash; // activeSecondaryMusicAudioSource.Serial = audioToPlay; // _currentMusicAudio = activeSecondaryMusicAudioSource; // if (_isLoggingAudio) // { // if (OnLogAudio != null) // OnLogAudio(hash, 2, loop, Time.time); // } // //_secondarySnap.TransitionTo(_toSecondaryTransitionTime); //} //public void TransitionToMainSnapshot() //{ // _mainSnap.TransitionTo(_toMainTransitionTime); // //StopCoroutine("StopSecondaryMusicIn"); // //StartCoroutine("StopSecondaryMusicIn", _toMainTransitionTime); //} //public void TransitionToSlomoSnapshot() //{ // _slowMotionSnapShot.TransitionTo(_toSlomoTime); //} //IEnumerator StopSecondaryMusicIn(float time) //{ // yield return new WaitForSeconds(time); // if (activeSecondaryMusicAudioSource.Source != null) // { // activeSecondaryMusicAudioSource.Source.Stop(); // Debug.Log("SEcondary music stopped"); // } //} public AudioSource PlaySFX(string hash, bool loop, Transform parent, bool singleInstance = false, float addedRandomPitch = 0, float addedPitch = 0) { if (hash == "") { return(null); } if (singleInstance) { StopSFX(hash, true); } if (!sfxList.ContainsKey(hash)) { return(null); } AudioDetails audioDetail = new AudioDetails(); //get new audiosource object, set the clip and properties and save reference AudioSerial audioToPlay = sfxList[hash]; GameObject sfxObj = new GameObject(hash); //TODO: once a pool is made, get gameobject from pool instead of creating new sfxObj.transform.parent = parent; sfxObj.transform.localPosition = Vector3.zero; AudioSource source = sfxObj.AddComponent <AudioSource>(); source.GetComponent <AudioSource>().clip = audioToPlay.source; source.volume = audioToPlay._relativeVolume * sfxVolume; source.loop = loop; source.minDistance = maxHearingDistance; source.maxDistance = maxHearingDistance; source.pitch += (Random.value - 0.5f) * 2 * addedRandomPitch + addedPitch; source.dopplerLevel = 0f; //sets doppler to 0 to cancel pitch distortions on movement source.outputAudioMixerGroup = _sfxMixerGroup; if (parent == null) { DontDestroyOnLoad(source.gameObject); } source.Play(); if (_isLoggingAudio) { if (OnLogAudio != null) { OnLogAudio(hash, 1, loop, Time.time); } } audioDetail.Source = source; audioDetail.Serial = audioToPlay; activeSFXAudioSources.Add(audioDetail); return(source); }
public void PlayMusic(string hash, bool loop = true, MusicMixerGroup group = MusicMixerGroup.DEFAULT_LOW, bool fadeToSnapshot = false, Vector3 position = default(Vector3)) { Debug.Log("Playing song " + hash); if (hash == null || !musicList.ContainsKey(hash)) { return; } AudioDetails musicDetail = activeMusicAudioSource; switch (group) { case MusicMixerGroup.DEFAULT_LOW: Debug.Log("set as low"); musicDetail = activeMusicAudioSource; break; case MusicMixerGroup.DEFAULT_HIGH: Debug.Log("set as high"); musicDetail = activeSecondaryMusicAudioSource; break; case MusicMixerGroup.PAUSE: Debug.Log("set as pause"); musicDetail = pauseMusicSource; break; } if (musicDetail.Source.clip == null || musicDetail.Source.clip != musicList[hash].source) { Debug.Log("music source set to " + musicDetail.Source.name); //get music object, set the audio clip to it and save reference AudioSerial audioToPlay = musicList[hash]; musicDetail.Source.Stop(); musicDetail.Source.clip = audioToPlay.source; musicDetail.Source.priority = 0; musicDetail.Source.volume = musicVolume * audioToPlay._relativeVolume; musicDetail.Source.loop = loop; musicDetail.Source.maxDistance = maxHearingDistance; musicDetail.Source.Play(); musicDetail.Serial = musicList[hash]; activeMusicAudioHash = hash; } if (_currentMusicAudio != null && fadeToSnapshot && _currentMusicAudio.Source.clip != musicDetail.Source.clip) { CrossFade(_currentMusicAudio, musicDetail, _fadeTime); } _currentMusicAudio = musicDetail; //_currentMusicSourceVolume = musicVolume * audioToPlay._relativeVolume; if (_isLoggingAudio) { if (OnLogAudio != null) { OnLogAudio(hash, 0, loop, Time.time); } } }