- TriggerToggle now accepts a list of GameObjects to toggle. - Skee-ball disables only scoreboxes to prevent balls from being dropped early.
67 lines
1.5 KiB
C#
67 lines
1.5 KiB
C#
|
|
using UdonSharp;
|
|
using UnityEngine;
|
|
using VRC.SDKBase;
|
|
using VRC.Udon;
|
|
|
|
|
|
[UdonBehaviourSyncMode(BehaviourSyncMode.None)]
|
|
public class TriggerToggle : UdonSharpBehaviour
|
|
{
|
|
[SerializeField] private GameObject[] _ToggledObjects;
|
|
|
|
[Tooltip("When true, object is active when player is inside trigger volume. If false, object is inactive when inside trigger volume.")]
|
|
[SerializeField] private bool _ActiveOnTrigger = true;
|
|
[Tooltip("Set number of seconds to delay toggle when entering trigger volume.")]
|
|
[SerializeField] private float _EnterDelay = 0.0f;
|
|
[Tooltip("Set number of seconds to delay toggle when exiting trigger volume.")]
|
|
[SerializeField] private float _ExitDelay = 0.0f;
|
|
|
|
|
|
public override void OnPlayerTriggerEnter(VRCPlayerApi Player)
|
|
{
|
|
if (Player.isLocal)
|
|
{
|
|
if (_EnterDelay > 0.01f)
|
|
{
|
|
SendCustomEventDelayedSeconds(nameof(EnableToggledObjects), _EnterDelay);
|
|
}
|
|
else
|
|
{
|
|
EnableToggledObjects();
|
|
}
|
|
}
|
|
base.OnPlayerTriggerEnter(Player);
|
|
}
|
|
public void EnableToggledObjects()
|
|
{
|
|
foreach (GameObject Object in _ToggledObjects)
|
|
{
|
|
Object.SetActive(_ActiveOnTrigger);
|
|
}
|
|
}
|
|
|
|
public override void OnPlayerTriggerExit(VRCPlayerApi Player)
|
|
{
|
|
if (Player.isLocal)
|
|
{
|
|
if (_ExitDelay > 0.01f)
|
|
{
|
|
SendCustomEventDelayedSeconds(nameof(DisableToggledObjects), _ExitDelay);
|
|
}
|
|
else
|
|
{
|
|
DisableToggledObjects();
|
|
}
|
|
}
|
|
base.OnPlayerTriggerExit(Player);
|
|
}
|
|
public void DisableToggledObjects()
|
|
{
|
|
foreach (GameObject Object in _ToggledObjects)
|
|
{
|
|
Object.SetActive(!_ActiveOnTrigger);
|
|
}
|
|
}
|
|
}
|