BITKit/Packages/Common~/Scripts/AudioSystem/AudioSO.cs

54 lines
1.4 KiB
C#

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
}
}
}