ArabDesert/Assets/QvPen/UdonScript/UI/QvPen_InteractButton.cs

60 lines
2.1 KiB
C#

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon.Common.Interfaces;
namespace QvPen.Udon.UI
{
[UdonBehaviourSyncMode(BehaviourSyncMode.None)]
public class QvPen_InteractButton : UdonSharpBehaviour
{
[SerializeField]
private bool canUseEveryone = false;
[SerializeField]
private bool canUseInstanceOwner = false;
[SerializeField]
private bool canUseOwner = false;
[SerializeField]
private bool canUseMaster = false;
[SerializeField]
private bool isGlobalEvent = false;
[SerializeField]
private bool onlySendToOwner = false;
[SerializeField]
private UdonSharpBehaviour udonSharpBehaviour;
[SerializeField]
private UdonSharpBehaviour[] udonSharpBehaviours = { };
[SerializeField]
private string customEventName = "Unnamed";
public override void Interact()
{
if (!canUseEveryone)
{
if (canUseInstanceOwner && !Networking.IsInstanceOwner)
return;
if (canUseMaster && !Networking.IsMaster)
return;
if (canUseOwner && !Networking.IsOwner(gameObject))
return;
}
if (udonSharpBehaviour)
if (!isGlobalEvent)
udonSharpBehaviour.SendCustomEvent(customEventName);
else
udonSharpBehaviour.SendCustomNetworkEvent(onlySendToOwner ? NetworkEventTarget.Owner : NetworkEventTarget.All, customEventName);
else if (udonSharpBehaviours.Length > 0)
if (!isGlobalEvent)
foreach (var udonSharpBehaviour in udonSharpBehaviours)
udonSharpBehaviour.SendCustomEvent(customEventName);
else
foreach (var udonSharpBehaviour in udonSharpBehaviours)
udonSharpBehaviour.SendCustomNetworkEvent(onlySendToOwner ? NetworkEventTarget.Owner : NetworkEventTarget.All, customEventName);
}
}
}