62 lines
886 B
C#
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;
|
|
}
|
|
}
|