public void InitDCLAudioClip(DCLAudioClip dclAudioClip) { if (lastDCLAudioClip != null) { lastDCLAudioClip.OnLoadingFinished -= DclAudioClip_OnLoadingFinished; } lastDCLAudioClip = dclAudioClip; }
private void DclAudioClip_OnLoadingFinished(DCLAudioClip obj) { if (obj.loadingState == DCLAudioClip.LoadState.LOADING_COMPLETED && audioSource != null) { ApplyLoadedAudioClip(obj); } obj.OnLoadingFinished -= DclAudioClip_OnLoadingFinished; }
private void DclAudioClip_OnLoadingFinished(DCLAudioClip obj) { if (obj.loadingState == DCLAudioClip.LoadState.LOADING_COMPLETED && audioSource != null) { audioSource.PlayOneShot(obj.audioClip); } obj.OnLoadingFinished -= DclAudioClip_OnLoadingFinished; }
private void ApplyLoadedAudioClip(DCLAudioClip clip) { if (audioSource.clip != clip.audioClip) { audioSource.clip = clip.audioClip; } if (audioSource.enabled && model.playing && !audioSource.isPlaying) { //To remove a pesky and quite unlikely warning when the audiosource is out of scenebounds audioSource.Play(); } }
public override IEnumerator ApplyChanges(string newJson) { yield return(new WaitUntil(() => CommonScriptableObjects.rendererState.Get())); audioSource = gameObject.GetOrCreateComponent <AudioSource>(); model = SceneController.i.SafeFromJson <Model>(newJson); CommonScriptableObjects.sceneID.OnChange -= OnCurrentSceneChanged; CommonScriptableObjects.sceneID.OnChange += OnCurrentSceneChanged; audioSource.volume = (scene.sceneData.id == CommonScriptableObjects.sceneID.Get()) ? model.volume : 0f; audioSource.loop = model.loop; audioSource.pitch = model.pitch; audioSource.spatialBlend = 1; audioSource.dopplerLevel = 0.1f; if (model.playing) { DCLAudioClip dclAudioClip = scene.GetSharedComponent(model.audioClipId) as DCLAudioClip; if (dclAudioClip != null) { InitDCLAudioClip(dclAudioClip); //NOTE(Brian): Play if finished loading, otherwise will wait for the loading to complete (or fail). if (dclAudioClip.loadingState == DCLAudioClip.LoadState.LOADING_COMPLETED) { audioSource.clip = dclAudioClip.audioClip; audioSource.Play(); } else { dclAudioClip.OnLoadingFinished -= DclAudioClip_OnLoadingFinished; dclAudioClip.OnLoadingFinished += DclAudioClip_OnLoadingFinished; } } else { Debug.LogError("Wrong audio clip type when playing audiosource!!"); } } else { if (audioSource.isPlaying) { audioSource.Stop(); } } yield return(null); }
private void ApplyCurrentModel() { if (audioSource == null) { Debug.LogWarning("AudioSource is null!."); return; } Model model = (Model)this.model; audioSource.volume = ((scene.sceneData.id == CommonScriptableObjects.sceneID.Get()) || (scene is GlobalScene globalScene && globalScene.isPortableExperience)) ? model.volume : 0f; audioSource.volume = (scene.sceneData.id == CommonScriptableObjects.sceneID.Get()) ? model.volume : 0f; audioSource.loop = model.loop; audioSource.pitch = model.pitch; audioSource.spatialBlend = 1; audioSource.dopplerLevel = 0.1f; if (model.playing) { DCLAudioClip dclAudioClip = scene.GetSharedComponent(model.audioClipId) as DCLAudioClip; if (dclAudioClip != null) { InitDCLAudioClip(dclAudioClip); //NOTE(Brian): Play if finished loading, otherwise will wait for the loading to complete (or fail). if (dclAudioClip.loadingState == DCLAudioClip.LoadState.LOADING_COMPLETED) { ApplyLoadedAudioClip(dclAudioClip); } else { dclAudioClip.OnLoadingFinished -= DclAudioClip_OnLoadingFinished; dclAudioClip.OnLoadingFinished += DclAudioClip_OnLoadingFinished; } } else { Debug.LogError("Wrong audio clip type when playing audiosource!!"); } } else { if (audioSource.isPlaying) { audioSource.Stop(); } } }
private void ApplyLoadedAudioClip(DCLAudioClip clip) { if (audioSource.clip != clip.audioClip) { audioSource.clip = clip.audioClip; } Model model = (Model)this.model; bool shouldPlay = playedAtTimestamp != model.playedAtTimestamp || (model.playing && !audioSource.isPlaying); if (audioSource.enabled && model.playing && shouldPlay) { //To remove a pesky and quite unlikely warning when the audiosource is out of scenebounds audioSource.Play(); } playedAtTimestamp = model.playedAtTimestamp; }
private void ApplyCurrentModel() { audioSource.volume = (scene.sceneData.id == CommonScriptableObjects.sceneID.Get()) ? model.volume : 0f; audioSource.loop = model.loop; audioSource.pitch = model.pitch; audioSource.spatialBlend = 1; audioSource.dopplerLevel = 0.1f; if (model.playing) { DCLAudioClip dclAudioClip = scene.GetSharedComponent(model.audioClipId) as DCLAudioClip; if (dclAudioClip != null) { InitDCLAudioClip(dclAudioClip); //NOTE(Brian): Play if finished loading, otherwise will wait for the loading to complete (or fail). if (dclAudioClip.loadingState == DCLAudioClip.LoadState.LOADING_COMPLETED) { audioSource.clip = dclAudioClip.audioClip; if (audioSource.enabled) //To remove a pesky and quite unlikely warning when the audiosource is out of scenebounds { audioSource.Play(); } } else { dclAudioClip.OnLoadingFinished -= DclAudioClip_OnLoadingFinished; dclAudioClip.OnLoadingFinished += DclAudioClip_OnLoadingFinished; } } else { Debug.LogError("Wrong audio clip type when playing audiosource!!"); } } else { if (audioSource.isPlaying) { audioSource.Stop(); } } }