78 lines
1.6 KiB
C#
78 lines
1.6 KiB
C#
|
|
using UdonSharp;
|
|
using UnityEngine;
|
|
using VRC.Udon.Common.Interfaces;
|
|
using VRC.SDKBase;
|
|
using VRC.Udon.Common;
|
|
using VRC.SDK3.Components;
|
|
|
|
|
|
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
|
|
public class Buzzer : UdonSharpBehaviour
|
|
{
|
|
[SerializeField] private GameManagerRound1 _GameManager;
|
|
[Space]
|
|
[SerializeField] private PlayerPodium _Podium;
|
|
[SerializeField] private Animator _Animator;
|
|
[SerializeField] private VRCPickup _Pickup;
|
|
|
|
[UdonSynced] private bool _Enabled = false;
|
|
[UdonSynced] private bool _TriggerPulled = false;
|
|
|
|
|
|
public override void OnDeserialization(DeserializationResult Result)
|
|
{
|
|
_Enable_Synced();
|
|
_TriggerPulled_Synced();
|
|
|
|
base.OnDeserialization(Result);
|
|
}
|
|
|
|
|
|
public void Enable(bool EnableBuzzer)
|
|
{
|
|
_Enabled = EnableBuzzer;
|
|
_Enable_Synced();
|
|
RequestSerialization();
|
|
}
|
|
|
|
public void BuzzerUseDown()
|
|
{
|
|
VRCPlayerApi LocalPlayer = Networking.LocalPlayer;
|
|
if (_Podium.GetPlayerID() == LocalPlayer.playerId)
|
|
{
|
|
_GameManager.SendCustomNetworkEvent(NetworkEventTarget.Owner,
|
|
"PlayerBuzzedIn", _Podium.PlayerNumber);
|
|
}
|
|
|
|
_TriggerPulled = true;
|
|
_TriggerPulled_Synced();
|
|
RequestSerialization();
|
|
|
|
base.OnPickupUseDown();
|
|
}
|
|
|
|
public void BuzzerUseUp()
|
|
{
|
|
_TriggerPulled = false;
|
|
_TriggerPulled_Synced();
|
|
RequestSerialization();
|
|
|
|
base.OnPickupUseUp();
|
|
}
|
|
|
|
|
|
private void _Enable_Synced()
|
|
{
|
|
_Pickup.gameObject.SetActive(_Enabled);
|
|
_Pickup.transform.localPosition = Vector3.zero;
|
|
_Pickup.transform.localEulerAngles = Vector3.zero;
|
|
_Pickup.pickupable = Networking.IsOwner(gameObject);
|
|
}
|
|
|
|
private void _TriggerPulled_Synced()
|
|
{
|
|
_Animator.SetBool("Trigger Pull", _TriggerPulled);
|
|
}
|
|
}
|