XRoom_Unity/Assets/Photon/FusionXRHost/Scripts/Grabbing/NetworkGrabbable.cs
2025-05-31 10:20:20 +03:30

36 lines
1.1 KiB
C#

using Fusion.XR.Host.Rig;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
namespace Fusion.XR.Host.Grabbing
{
[DefaultExecutionOrder(NetworkGrabbable.EXECUTION_ORDER)]
public abstract class NetworkGrabbable : NetworkBehaviour
{
public const int EXECUTION_ORDER = NetworkGrabber.EXECUTION_ORDER + 10;
public virtual NetworkGrabber CurrentGrabber { get; set; }
public bool IsGrabbed => CurrentGrabber != null;
[Header("Events")]
public UnityEvent onDidUngrab = new UnityEvent();
public UnityEvent<NetworkGrabber> onDidGrab = new UnityEvent<NetworkGrabber>();
public abstract void Grab(NetworkGrabber newGrabber, GrabInfo newGrabInfo);
public abstract void Ungrab(NetworkGrabber grabber, GrabInfo newGrabInfo);
public void DidGrab()
{
if (onDidGrab != null) onDidGrab.Invoke(CurrentGrabber);
}
public void DidUngrab(NetworkGrabber lastGrabber)
{
if (onDidGrab != null) onDidUngrab.Invoke();
}
}
}