44 lines
1.3 KiB
C#
44 lines
1.3 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
using EntityNetwork;
|
|
|
|
public class AudioProvider : EntityBase, IAutoRegister
|
|
{
|
|
public static AudioProvider Instance;
|
|
public override void Awake() {
|
|
base.Awake();
|
|
Instance = this;
|
|
|
|
bgmSrc = GetComponent<AudioSource>();
|
|
}
|
|
|
|
public float musicSpeed = 1f;
|
|
AudioSource bgmSrc;
|
|
|
|
public void Update() {
|
|
// TODO - This is WIP help
|
|
//bgmSrc.outputAudioMixerGroup.
|
|
}
|
|
|
|
int lastAudioFrame = 0;
|
|
public static void PlaySFX(AudioClip sfx, AudioHelper.AudioCategory category = AudioHelper.AudioCategory.Fx, float volume = 1.0f, bool sendRemote = true) {
|
|
if (sfx == null) return;
|
|
if (sendRemote)
|
|
Instance.RaiseEvent('s', true, AudioHelper.ByClip(sfx), (byte)category, volume);
|
|
else
|
|
Instance.InternallyPlaySFXEvent(AudioHelper.ByClip(sfx), (byte)category, volume);
|
|
}
|
|
|
|
[NetEvent('s')]
|
|
public void InternallyPlaySFXEvent(int sfxID, byte category, float volume) {
|
|
// Don't allow multiple audio sources to trigger at once
|
|
if (Time.frameCount == lastAudioFrame) return;
|
|
lastAudioFrame = Time.frameCount;
|
|
|
|
var clip = AudioHelper.ByID(sfxID);
|
|
AudioSource.PlayClipAtPoint(clip, Camera.main.transform.position, AudioHelper.VolumeLevel((AudioHelper.AudioCategory)category) * volume);
|
|
}
|
|
}
|