using System.Net.NetworkInformation; using BestHTTP.SecureProtocol.Org.BouncyCastle.Ocsp; using UdonSharp; using UnityEngine; using VRC.SDK3.UdonNetworkCalling; using VRC.SDKBase; using VRC.Udon; using VRC.Udon.Common.Interfaces; public class Door : UdonSharpBehaviour { [SerializeField] private Animator doorAnimator; [SerializeField] private AudioSource doorAudioSource; [UdonSynced] private bool isOpen = false; [Header("Audio Clips")] [SerializeField] private AudioClip doorOpenClip; [SerializeField] private AudioClip doorCloseClip; [SerializeField] private AudioClip doorLockedClip; private void ToggleOpen() { if (Networking.IsOwner(gameObject)) { isOpen = !isOpen; doorAnimator.SetBool("isOpen", isOpen); RequestSerialization(); } else { SendCustomNetworkEvent(NetworkEventTarget.All, nameof(TryLocked)); } } public override void OnDeserialization() { doorAnimator.SetBool("isOpen", isOpen); } public void HandleInteraction() { ToggleOpen(); } public void PlayOpenSound() { doorAudioSource.PlayOneShot(doorOpenClip); } public void PlayCloseSound() { doorAudioSource.PlayOneShot(doorCloseClip); } public void PlayLockedSound() { doorAudioSource.PlayOneShot(doorLockedClip); } [NetworkCallable] public void TryLocked() { doorAnimator.SetTrigger("tryLocked"); } }