NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Framework/Audio/AudioCriware.cs

304 lines
8.8 KiB
C#

// using System;
// using System.Collections.Generic;
// using UnityEngine;
// using CriWare;
// using CriWare.Assets;
// using PhxhSDK;
//
// //基于Criware的音频控制类
// public class AudioCriware: AudioBase
// {
// private CriAtomSourceForAsset _criAtomSource;
// private CriAtomExPlayback criAtomExPlayback;
// private CriAtomAssets _criAtomAssets;
// private CriAtomAcbAsset _initAcb;
// private CriAtomCueReference _cue;
// private int _playID = -1;
// private bool _isSpeak;
//
// private GameObject _posGo;
//
// public static Dictionary<CriAtomAcbAsset, CriAtomCueReference> CueReferenceDic = new();
//
// public GameObject PosGo
// {
// get => _posGo;
// set =>_posGo = value;
// }
// public CriAtomExPlayback CriAtomPlayback => criAtomExPlayback;
// public CriAtomAcbAsset AcbAsset => _initAcb;
//
// public int PlayID => _playID;
// //private GameObject _rootGo;
//
// private int _cueId = -1;
// private static int _cueIDs = 0;
//
// public static int CueIDGen()
// {
// return ++_cueIDs;
// }
//
// public int GenPlayID()
// {
// return ++_playID;
// }
//
// //public GameObject RootGo => _rootGo;
//
// public CriAtomSourceForAsset audioSource
// {
// get => _criAtomSource;
// }
// protected AudioCriware(CriAtomAcbAsset acbAsset, bool loop, GameObject posObj, GameObject rootGo, bool is3D,
// string cueName, AudioInfo audioInfo): base()
// {
// if (!posObj)
// {
// //DebugUtil.LogError("音频对象池内,可取对象为空!!!");
//
// }
// _posGo = posObj;
// _rootGo = rootGo;
//
// sourceTransform = _rootGo.transform;
// persist = audioInfo.persist;
// targetVolume = audioInfo.volume;
// initTargetVolume = audioInfo.volume;
// volume = audioInfo.volume;
// tempFadeSeconds = -1;
// fadeInSeconds = audioInfo.fadeInValue;
// fadeOutSeconds = audioInfo.fadeOutValue;
//
// //playState = PlayState.Stopped;
// playState = PlayState.Loading;
//
// //等acb文件加载完成后挂source
// //acbAsset.OnLoaded += OnAcbLoaded(acbAsset, cueName, loop, is3D);
// //OnAcbLoaded(acbAsset, cueName, loop, is3D);
// }
//
// protected virtual void AttachAnalyzer()
// {
//
// }
//
// //加载音频文件完成后的操作
// protected Action<CriAtomAcbAsset> OnAcbLoaded(CriAtomAcbAsset acbAsset, string cueName, bool isLoop = false, bool is3D = false)
// {
// CreateAudiosource(acbAsset, isLoop, is3D);
// AttachAnalyzer();
// if (cueName.Length > 0)
// {
// PlayByCueName(cueName);
// }
// else
// {
// Play();
// }
//
// return null;
// }
//
// public void Play()
// {
// base.Play();
// GenPlayID();
// playState = PlayState.Playing;
// }
//
// private bool _GetFreeAudioSource()
// {
//
// return false;
// }
//
// public void CreateAudiosource(CriAtomAcbAsset acbAsset, bool loop = false, bool is3D = false)
// {
// _criAtomSource = _rootGo.GetComponent<CriAtomSourceForAsset>();
// if (!_criAtomSource)
// {
// _criAtomSource = _rootGo.AddComponent<CriAtomSourceForAsset>();
// }
//
// //CriAtomCueReference cueReference = new CriAtomCueReference(acbAsset, CueIDGen());//CueIDGen());
// var cueReference = CueReferenceDic[acbAsset];
// _criAtomSource.Cue = cueReference;
// _criAtomSource.loop = loop;
// _criAtomSource.volume = 1f;
// _initAcb = acbAsset;
// }
//
// public void Stop()
// {
// base.Stop();
// _criAtomSource.Stop();
// }
//
// public override void Play(float volume)
// {
// if (_criAtomSource == null)
// {
// CreateAudiosource(_initAcb, loop);
// }
//
// criAtomExPlayback = _criAtomSource.Play();
// playState = PlayState.Playing;
//
// fadeInterpolater = 0f;
// onFadeStartVolume = this.volume;
// targetVolume = volume;
// GenPlayID();
// }
//
// public void PlayByCueName(string cueName, bool isLoop = false)
// {
// if (_criAtomSource == null)
// {
// CreateAudiosource(_initAcb, loop);
// }
//
// criAtomExPlayback = _criAtomSource.Play(cueName);
// playState = PlayState.Playing;
//
//
// fadeInterpolater = 0f;
// onFadeStartVolume = this.volume;
// targetVolume = volume;
// this.loop = isLoop;
// GenPlayID();
// }
//
// public override void Play(string cueName, bool isLoop = false)
// {
// PlayByCueName(cueName, isLoop);
// GenPlayID();
// }
//
// public override void Pause()
// {
// _criAtomSource.Pause(true);
// playState = PlayState.Paused;
// }
//
// //继续播放
// public override void Resume()
// {
// _criAtomSource.Pause(false);
// playState = PlayState.Playing;
// }
//
// public void SetPitch(float _pitch)
// {
// if (_criAtomSource != null)
// {
// _criAtomSource.pitch = _pitch;
// }
// }
//
// public void SetIs3D(bool is3D)
// {
// _criAtomSource.use3dPositioning = is3D;
// }
//
// public void SetAcbAsset(CriAtomAcbAsset acbAsset)
// {
// _initAcb = acbAsset;
// if (_criAtomSource)
// {
// _criAtomSource.Cue = CueReferenceDic[acbAsset];
// }
// }
//
// public void SetIsSpeak(bool isSpeak)
// {
// _isSpeak = isSpeak;
// }
// public override void Update()
// {
// if (!_criAtomSource)
// {
// return;
// }
//
// activated = true;
//
// if (Math.Abs(volume - targetVolume) > 0.01f)
// {
// float fadeValue;
// fadeInterpolater += Time.unscaledDeltaTime;
// if (volume > targetVolume)
// {
// fadeValue = Math.Abs(tempFadeSeconds + 1) > 0.01f ? tempFadeSeconds : fadeOutSeconds;
// }
// else
// {
// fadeValue = Math.Abs(tempFadeSeconds + 1) > 0.01f ? tempFadeSeconds : fadeInSeconds;
// }
//
// volume = Mathf.Lerp(onFadeStartVolume, targetVolume, fadeInterpolater / fadeValue);
// }
// else if (Math.Abs(tempFadeSeconds - (-1)) > 0.01)
// {
// tempFadeSeconds = -1;
// }
//
// switch (audioType)
// {
// case AudioType.Music:
// {
// _criAtomSource.volume = volume * AudioManager.Instance.GlobalMusicVolume * AudioManager.Instance.GlobalVolume;
// break;
// }
// case AudioType.Sound:
// {
// if (_isSpeak)
// {
// _criAtomSource.volume = volume * AudioManager.Instance.GlobalSpeakVolume * AudioManager.Instance.GlobalVolume;
// break;
// }
// _criAtomSource.volume = volume * AudioManager.Instance.GlobalSoundsVolume * AudioManager.Instance.GlobalVolume;
// break;
// }
// }
//
// if (volume == 0f && IsStopped)
// {
// if (audioType == AudioType.Music)
// {
// DebugUtil.LogError($"Music Stop ID:{audioID}");
// }
// _criAtomSource.Stop();
// }
//
// if (IsStopped && _criAtomSource.status != CriAtomSourceBase.Status.Stop)
// {
// _criAtomSource.Stop();
// }
//
// // Update playing status
// // if (_criAtomSource.status != CriAtomSourceBase.Status.Playing && !Application.isFocused)
// // {
// //playState = PlayState.Playing;
// // if (audioType == AudioType.Music)
// // {
// // DebugUtil.LogError($"Music Stop ID:{audioID}");
// // }
// //playState = PlayState.Stopped;
// //}
//
// if (_criAtomSource.status == CriAtomSourceBase.Status.Stop && playState != PlayState.Stopped)
// {
// // if (audioType == AudioType.Music)
// // {
// // DebugUtil.LogError($"Music Stop ID:{audioID}");
// // }
// playState = PlayState.Stopped;
// }
//
// if (_criAtomSource.status == CriAtomSourceBase.Status.PlayEnd && playState != PlayState.Stopped)
// {
// playState = PlayState.Stopped;
// }
// }
// }