63 lines
1018 B
C#

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
public class GlassShatter : UdonSharpBehaviour
{
[SerializeField] private AudioManager _AudioManager;
[SerializeField] private Collider[] _Colliders;
[UdonSynced, FieldChangeCallback(nameof(Shattered))] private bool _Shattered = false;
private bool _Prepared = false;
public void PrepareEnter()
{
_Prepared = true;
}
public void PrepareExit()
{
_Prepared = false;
}
public void ShatterEnter()
{
if (_Prepared && !Shattered)
{
Networking.SetOwner(Networking.LocalPlayer, gameObject);
Shattered = true;
_Shatter_Synced();
RequestSerialization();
}
}
public void ShatterExit()
{
Shattered = false;
}
private void _Shatter_Synced()
{
if (Shattered)
{
_AudioManager.PlaySFXAtPitch(SFXEventType.GlassShatter, Random.Range(0.9f, 1.1f));
}
}
public bool Shattered
{
set
{
_Shattered = value;
_Shatter_Synced();
}
get => _Shattered;
}
}