This commit is contained in:
CortexCore
2023-06-05 16:25:06 +08:00
parent 9027120bb8
commit 4565ff2e35
2947 changed files with 0 additions and 0 deletions

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

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

View 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