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 PrepareEnter() { if (!Shattered) { _Prepared = true; } } public void PrepareExit() { _Prepared = false; } public void ShatterEnter() { if (_Prepared && !Shattered) { Shattered = true; _Shatter_Synced(); RequestSerialization(); } } public void ShatterExit() { Shattered = false; } private void _Shatter_Synced() { if (Shattered) { _AudioManager.PlaySFX(SFXEventType.GlassShatter); } } public bool Shattered { set { _Shattered = value; _Shatter_Synced(); } get => _Shattered; } }