using UnityEngine.Scripting.APIUpdating;
using UnityEngine.XR.Interaction.Toolkit.Interactors;
namespace UnityEngine.XR.Interaction.Toolkit.Interactables
{
///
/// An interface that represents an Interactable component which Interactor
/// components can activate. Not to be confused with the active state of a GameObject,
/// an activate event in this context refers to a contextual command action, such as
/// toggling a flashlight on and off.
///
///
[MovedFrom("UnityEngine.XR.Interaction.Toolkit")]
public interface IXRActivateInteractable : IXRInteractable
{
///
/// The event that is called when the selecting Interactor activates this Interactable.
///
///
/// Not to be confused with activating or deactivating a with .
/// This is a generic event when an Interactor wants to activate an Interactable,
/// such as from a trigger pull on a controller.
///
/// The passed to each listener is only valid while the event is invoked,
/// do not hold a reference to it.
///
///
ActivateEvent activated { get; }
///
/// The event that is called when an Interactor deactivates this Interactable.
///
///
/// Not to be confused with activating or deactivating a with .
/// This is a generic event when an Interactor wants to deactivate an Interactable,
/// such as from a trigger release on a controller.
///
/// The passed to each listener is only valid while the event is invoked,
/// do not hold a reference to it.
///
///
DeactivateEvent deactivated { get; }
///
/// This method is called when the Interactor begins an activation event on this Interactable.
///
/// Event data containing the Interactor that is sending the activate event.
///
/// is only valid during this method call, do not hold a reference to it.
///
///
void OnActivated(ActivateEventArgs args);
///
/// This method is called when the Interactor ends an activation event on this Interactable.
///
/// Event data containing the Interactor that is sending the deactivate event.
///
/// is only valid during this method call, do not hold a reference to it.
///
///
void OnDeactivated(DeactivateEventArgs args);
}
}