62 lines
886 B
C#

using UdonSharp;
using UnityEngine;
using VRC.Udon.Common.Interfaces;
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
public class GlassShatter : UdonSharpBehaviour
{
[SerializeField] AudioManager _AudioManager;
[UdonSynced, FieldChangeCallback(nameof(Shattered))] private bool _Shattered = false;
private bool _Prepared = false;
public void Initialise()
{
Shattered = false;
}
public void PrepareEnter()
{
if (!_Shattered)
{
_Prepared = true;
}
}
public void PrepareExit()
{
_Prepared = false;
}
public void ShatterEnter()
{
if (_Prepared && !_Shattered)
{
Shattered = true;
_Shatter_Synced();
RequestSerialization();
}
}
private void _Shatter_Synced()
{
_AudioManager.PlaySFX(SFXEventType.GlassShatter);
}
public bool Shattered
{
set
{
_Shattered = value;
_Shatter_Synced();
}
get => _Shattered;
}
}