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