| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- using Il2Cpp;
- using Il2CppInterop.Runtime.Attributes;
- using MelonLoader;
- using System.Collections;
- using UnityEngine;
- using UnityEngine.Networking;
- namespace AudioMgr
- {
- [RegisterTypeInIl2Cpp]
- public class Stream : MonoBehaviour
- {
- public Stream(IntPtr intPtr) : base(intPtr)
- {
- }
- private AudioSource _audioSource;
-
- private Setting _activeSetting;
- private AudioMaster.SourceType _sourceType;
- private bool _isSetup;
- private string _streamURL;
- //private AudioClip _streamClip = null;
- private UnityWebRequest _www;
- public enum PlayState { Stopped, Playing };
- private PlayState _playState = PlayState.Stopped;
- [HideFromIl2Cpp]
- public void Setup(string streamURL, AudioMaster.SourceType sourceType)
- {
- _streamURL = streamURL;
- _sourceType = sourceType;
-
- _audioSource = gameObject.AddComponent<AudioSource>();
- _audioSource.playOnAwake = false;
- _audioSource.volume = VolumeMaster.GetVolume(sourceType);
- VolumeMaster.onVolumeChange += ResetVolume;
- ApplySettings(SettingMaster.Defaults(sourceType));
- _isSetup = true;
- }
- [HideFromIl2Cpp]
- public void Setup(string streamURL, Setting sourceSetting)
- {
- _streamURL = streamURL;
- _sourceType = sourceType;
-
- _sourceType = AudioMaster.SourceType.Custom;
- _audioSource = gameObject.AddComponent<AudioSource>();
- _audioSource.playOnAwake = false;
- _audioSource.volume = VolumeMaster.GetVolume(sourceType);
- VolumeMaster.onVolumeChange += ResetVolume;
- ApplySettings(sourceSetting);
- _isSetup = true;
- }
-
- private IEnumerator PlayAudioRoutine()
- {
- /*
- UnityWebRequest www;
- WWW foowww = new WWW(_streamURL);
- www = UnityWebRequest.Get(_streamURL);
- www.SendWebRequest();
- MelonLogger.Msg("start ruotig ");
-
- if (!www.isNetworkError && !www.isHttpError)
- {
- MelonLogger.Msg("now create");
-
-
- _audioSource.clip = WebRequestWWW.InternalCreateAudioClipUsingDH(www.downloadHandler, www.url, true, true, AudioType.UNKNOWN);
- yield return new WaitForSeconds(10f);
- MelonLogger.Msg("now play ");
- _audioSource.PlayDelayed(1f);
- _playState = PlayState.Playing;
- }
- else
- {
- _playState = PlayState.Stopped;
- MelonLogger.Msg("Error while loading audioclip. Skipping " + www.error);
- }
-
- while (_playState == PlayState.Playing)
- {
- MelonLogger.Msg("in while ");
- yield return null;
- }
- MelonLogger.Msg("now stop ");
- Stop();
-
- */
- yield return null;
- }
-
-
- [HideFromIl2Cpp]
- public void Play()
- {
- if (_playState == PlayState.Stopped && _isSetup == true)
- {
- _playState = PlayState.Playing;
- MelonCoroutines.Start(PlayAudioRoutine());
- }
- }
- [HideFromIl2Cpp]
- public void Stop()
- {
- _playState = PlayState.Stopped;
- _audioSource.Stop();
- _www?.Dispose();
-
- }
-
- [HideFromIl2Cpp]
- private void OnEnable()
- {
- VolumeMaster.onVolumeChange += ResetVolume;
- }
- [HideFromIl2Cpp]
- private void OnDisable()
- {
- VolumeMaster.onVolumeChange -= ResetVolume;
- }
- [HideFromIl2Cpp]
- private void OnDestroy()
- {
- VolumeMaster.onVolumeChange -= ResetVolume;
- }
- [HideFromIl2Cpp]
- private void ResetVolume()
- {
- if(_sourceType != AudioMaster.SourceType.Custom)
- {
- _audioSource.volume = VolumeMaster.GetVolume(_sourceType);
- }
- }
- [HideFromIl2Cpp]
- public void ApplySettings(Setting newSetting)
- {
- _activeSetting = newSetting;
- _sourceType = _activeSetting.sourceType;
- _audioSource.spread = _activeSetting.spread;
- _audioSource.panStereo = _activeSetting.panStereo;
- _audioSource.dopplerLevel = _activeSetting.dopplerLevel;
- _audioSource.maxDistance = _activeSetting.maxDistance;
- _audioSource.minDistance = _activeSetting.minDistance;
- _audioSource.pitch = _activeSetting.pitch;
- _audioSource.spatialBlend = _activeSetting.spatialBlend;
- _audioSource.spatialize = _activeSetting.spatialize;
- _audioSource.rolloffFactor = _activeSetting.rolloffFactor;
- _audioSource.maxVolume = _activeSetting.maxVolume;
- _audioSource.maxVolume = _activeSetting.minVolume;
- _audioSource.rolloffMode = _activeSetting.rolloffMode;
- //_audioSources[audioSource].SetCustomCurve(AudioSourceCurveType.CustomRolloff, _activeSetting.rollOffCurve);
- ResetVolume();
- }
-
- [HideFromIl2Cpp]
- public PlayState playState
- {
- get
- {
- return _playState;
- }
- }
- [HideFromIl2Cpp]
- public AudioMaster.SourceType sourceType
- {
- get
- {
- return _sourceType;
- }
- set
- {
- _sourceType = value;
- ApplySettings(SettingMaster.Defaults(_sourceType));
- }
- }
- [HideFromIl2Cpp]
- public string streamURL
- {
- get
- {
- return _streamURL;
- }
- set
- {
- _streamURL = value;
- }
- }
- }
- }
|