lobby improvements
This commit is contained in:
65
Assets/Quiz/Scripts/Door/Door.cs
Normal file
65
Assets/Quiz/Scripts/Door/Door.cs
Normal file
@@ -0,0 +1,65 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user