| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- using Il2Cpp;
- using Il2CppInterop.Runtime.Attributes;
- using MelonLoader;
- using System.Collections;
- using UnityEngine;
- using UnityEngine.Playables;
- namespace AudioMgr
- {
- public class Shot : MonoBehaviour
- {
- public Shot(IntPtr intPtr) : base(intPtr)
- {
- }
- private AudioSource _audioSource;
- private Setting _activeSetting;
- private bool _isEnabled = false;
-
- private AudioMaster.SourceType _sourceType;
- public enum PlayState { Stopped, Playing, Paused };
- private PlayState _playState = PlayState.Stopped;
- [HideFromIl2Cpp]
- public void Setup(AudioMaster.SourceType sourceType)
- {
- _sourceType = sourceType;
- _audioSource = gameObject.AddComponent<AudioSource>();
- _audioSource.playOnAwake = false;
- _audioSource.volume = VolumeMaster.GetVolume(sourceType);
- VolumeMaster.onVolumeChange += ResetVolume;
- ApplySettings(SettingMaster.Defaults(sourceType));
- }
- [HideFromIl2Cpp]
- public void Setup(Setting sourceSetting)
- {
- _sourceType = AudioMaster.SourceType.Custom;
- _audioSource = gameObject.AddComponent<AudioSource>();
- _audioSource.playOnAwake = false;
- _audioSource.volume = VolumeMaster.GetVolume(_sourceType);
- VolumeMaster.onVolumeChange += ResetVolume;
- ApplySettings(sourceSetting);
- }
- [HideFromIl2Cpp]
- private void OnEnable()
- {
- VolumeMaster.onVolumeChange += ResetVolume;
- }
- [HideFromIl2Cpp]
- private void OnDisable()
- {
- Stop();
- VolumeMaster.onVolumeChange -= ResetVolume;
- }
- [HideFromIl2Cpp]
- private void OnDestroy()
- {
- VolumeMaster.onVolumeChange -= ResetVolume;
- }
- [HideFromIl2Cpp]
- public void SetVolume(float newVolume)
- {
- _audioSource.volume = newVolume;
- }
- [HideFromIl2Cpp]
- public void AssignClip(Clip audioClip)
- {
- Stop();
- _audioSource.clip = audioClip.audioClip;
- }
- [HideFromIl2Cpp]
- public void Disable()
- {
- OnDisable();
- }
- [HideFromIl2Cpp]
- public void Enable()
- {
- OnEnable();
- }
- [HideFromIl2Cpp]
- public void Play(Clip audioClip)
- {
- Stop();
- _playState = PlayState.Playing;
- MelonCoroutines.Start(PlayRoutine(audioClip));
- }
- private IEnumerator PlayRoutine(Clip audioClip)
- {
- double _startTime = AudioSettings.dspTime + 0.6;
- double _endTime = _startTime + audioClip.clipLength + 0.6;
- _audioSource.PlayScheduled(_startTime);
- _playState = PlayState.Playing;
- while (AudioSettings.dspTime < _endTime)
- {
- yield return null;
- }
- Stop();
- }
- [HideFromIl2Cpp]
- public void Stop()
- {
- _playState = PlayState.Stopped;
- _audioSource.Stop();
- }
- [HideFromIl2Cpp]
- public void ResetVolume()
- {
- if (_audioSource)
- {
- _audioSource.volume = VolumeMaster.GetVolume(_sourceType);
- }
- }
- [HideFromIl2Cpp]
- public void PlayOneshot(Clip audioClip)
- {
- MelonCoroutines.Start(PlayOneshotRoutine(audioClip));
- }
- [HideFromIl2Cpp]
- private IEnumerator PlayOneshotRoutine(Clip audioClip)
- {
- _audioSource.PlayOneShot(audioClip.audioClip);
- yield return null;
- }
- [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.rolloffMode = _activeSetting.rolloffMode;
- _audioSource.priority = _activeSetting.priority;
- ResetVolume();
- }
- [HideFromIl2Cpp]
- public AudioMaster.SourceType sourceType
- {
- get
- {
- return _sourceType;
- }
- }
- }
- }
|