1
This commit is contained in:
54
Unity/Scripts/AudioSystem/AudioSO.cs
Normal file
54
Unity/Scripts/AudioSystem/AudioSO.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
#if MIRROR
|
||||
using Mirror;
|
||||
#endif
|
||||
namespace BITKit
|
||||
{
|
||||
#if MIRROR
|
||||
public static class AudioSOExtensions
|
||||
{
|
||||
public static Dictionary<int, AudioSO> dictionary = new();
|
||||
[RuntimeInitializeOnLoadMethod]
|
||||
static void Reload()
|
||||
{
|
||||
dictionary.Clear();
|
||||
}
|
||||
/* public static void Write(this NetworkWriter writer, AudioClip value)
|
||||
{
|
||||
writer.Write(value.name);
|
||||
}
|
||||
public static AudioClip ReadAudioClip(this NetworkReader reader)
|
||||
{
|
||||
return Data.Get<AudioClip>(reader.ReadString());
|
||||
} */
|
||||
public static void WriteAudioSO(this NetworkWriter writer, AudioSO value)
|
||||
{
|
||||
writer.Write(value.instanceID);
|
||||
}
|
||||
public static AudioSO ReadAudioSO(this NetworkReader reader)
|
||||
{
|
||||
return AudioSOExtensions.dictionary[reader.ReadInt()];
|
||||
}
|
||||
}
|
||||
#endif
|
||||
public class AudioSO : BITKitSO
|
||||
{
|
||||
public AudioClip[] clips;
|
||||
public float distance;
|
||||
public bool loop;
|
||||
public AudioClip Get()
|
||||
{
|
||||
return clips.Random();
|
||||
}
|
||||
public int instanceID;
|
||||
public override void RegisterAssets()
|
||||
{
|
||||
instanceID = GetInstanceID();
|
||||
#if MIRROR
|
||||
AudioSOExtensions.dictionary.Add(instanceID, this);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
19
Unity/Scripts/AudioSystem/BITKit.AudioSystem.asmdef
Normal file
19
Unity/Scripts/AudioSystem/BITKit.AudioSystem.asmdef
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "BITKit.AudioSystem",
|
||||
"rootNamespace": "",
|
||||
"references": [
|
||||
"GUID:a209c53514018594f9f482516f2a6781",
|
||||
"GUID:30817c1a0e6d646d99c048fc403f5979",
|
||||
"GUID:1d0b9d21c3ff546a4aa32399dfd33474",
|
||||
"GUID:14fe60d984bf9f84eac55c6ea033a8f4"
|
||||
],
|
||||
"includePlatforms": [],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": false,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [],
|
||||
"versionDefines": [],
|
||||
"noEngineReferences": false
|
||||
}
|
43
Unity/Scripts/AudioSystem/NetworkAudioSource.cs
Normal file
43
Unity/Scripts/AudioSystem/NetworkAudioSource.cs
Normal file
@@ -0,0 +1,43 @@
|
||||
#if MIRROR
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Mirror;
|
||||
namespace BITKit
|
||||
{
|
||||
public class NetworkAudioSource : NetworkBehaviour
|
||||
{
|
||||
[Header(Constant.Header.Components)]
|
||||
public AudioSource audioSource;
|
||||
[Header(Constant.Header.InternalVariables)]
|
||||
IGenericEvent<string> genericEvent;
|
||||
public void Play(AudioSO so)
|
||||
{
|
||||
if (isOwned)
|
||||
CmdPlay(so);
|
||||
else if (isServer)
|
||||
RpcPlay(so);
|
||||
}
|
||||
void Start()
|
||||
{
|
||||
TryGetComponent<IGenericEvent<string>>(out genericEvent);
|
||||
}
|
||||
[Command]
|
||||
void CmdPlay(AudioSO so)
|
||||
{
|
||||
RpcPlay(so);
|
||||
}
|
||||
[ClientRpc]
|
||||
void RpcPlay(AudioSO so)
|
||||
{
|
||||
audioSource.loop = so.loop;
|
||||
audioSource.clip = so.Get();
|
||||
audioSource.Play();
|
||||
if (genericEvent is not null)
|
||||
{
|
||||
genericEvent.Invoke(so);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
Reference in New Issue
Block a user