using UdonSharp; using UnityEngine; using VRC.SDKBase; [UdonBehaviourSyncMode(BehaviourSyncMode.None)] public class PickupUseCallback : UdonSharpBehaviour { [SerializeField] private UdonSharpBehaviour _CallbackObject; [Space] [SerializeField] private bool _SendOwnershipTransferRequest; [SerializeField] private string _OnPickupCallbackFunction; [SerializeField] private string _OnDropCallbackFunction; [SerializeField] private string _UseDownCallbackFunction; [SerializeField] private string _UseUpCallbackFunction; public override void OnOwnershipTransferred(VRCPlayerApi Player) { if (_SendOwnershipTransferRequest) { Networking.SetOwner(Player, _CallbackObject.gameObject); } base.OnOwnershipTransferred(Player); } public override void OnPickup() { if (_OnPickupCallbackFunction != "" && Utilities.IsValid(_CallbackObject)) { _CallbackObject.SendCustomEvent(_OnPickupCallbackFunction); } base.OnPickup(); } public override void OnDrop() { if (_OnDropCallbackFunction != "" && Utilities.IsValid(_CallbackObject)) { _CallbackObject.SendCustomEvent(_OnDropCallbackFunction); } base.OnDrop(); } public override void OnPickupUseDown() { if (_UseDownCallbackFunction != "" && Utilities.IsValid(_CallbackObject)) { _CallbackObject.SendCustomEvent(_UseDownCallbackFunction); } base.OnPickupUseDown(); } public override void OnPickupUseUp() { if (_UseUpCallbackFunction != "" && Utilities.IsValid(_CallbackObject)) { _CallbackObject.SendCustomEvent(_UseUpCallbackFunction); } base.OnPickupUseUp(); } }