class MAGES::Interaction::Interactors::ToolInteractor

Overview

A tool (grabbable) that can interact with other grabbables. More…

class ToolInteractor:
    public MAGES::Interaction::Interactors::BaseInteractor,
    public MAGES::Interaction::IHandPoseVisualizer
{
public:
    // properties

    HandPose IdlePose;
    HandPose TriggerPose;
    Collider ToolCollider;
    override bool IsHoverEnabled;
    bool HandPoseVisualEnabled;
    override bool IsSelectEnabled;
    override float SelectionIntensity;
    override float ActivationIntensity;
    bool IsToolSelecting;
    int HandPoseVisualizerIndex;
    IInteractor Interactor;
    IInteractable Interactable;
    bool IsInPoseArea;

    // methods

    virtual override bool CanHover(IInteractable interactable);
    virtual override bool CanSelect(IInteractable interactable);
    virtual override bool CanActivate(IInteractable interactable);
    virtual override void PreprocessInteractor(UpdatePhase updatePhase);
    virtual override void ProcessInteractor(UpdatePhase updatePhase);
    virtual override void AttachInteractorToInteractable();
    virtual override void DetachInteractorToInteractable();
    void SetHandPose(HandPose pose);

    void SetHandPose(
        HandPose pose,
        float interpolationTime,
        System.Action<HandPose> onInterpolationFinished
    );

    bool CreateAutomaticHandPose(HandPose pose, IInteractable interactable);
    void ResetDefaultHandPose();
    void GetCurrentHandPose(HandPose result);
    void SetMovementWithInteractable(bool enabled);
    override void GetValidTargets(List<IInteractable> result);
    void ToggleSelection(bool enable);
};

Inherited Members

public:
    // properties

    IInteractionManager InteractionManager;
    InteractionLayer InteractionLayer;
    Transform Transform;
    Rigidbody Rigidbody;
    List Colliders;
    UnityEvent<InteractorRegisterEventArgs> RegisterEntered;
    UnityEvent<InteractorDeregisterEventArgs> DeregisterEntered;
    UnityEvent<HoverEnterInteractionEventArgs> HoverEntered;
    UnityEvent<HoverExitInteractionEventArgs> HoverExited;
    UnityEvent<SelectEnterInteractionEventArgs> SelectEntered;
    UnityEvent<SelectExitInteractionEventArgs> SelectExited;
    UnityEvent<ActivateEnterInteractionEventArgs> ActivateEntered;
    UnityEvent<ActivateExitInteractionEventArgs> ActivateExited;
    bool IsHoverEnabled;
    bool HasHover;
    IInteractable HoveredInteractable;
    bool IsSelectEnabled;
    bool HasSelection;
    IInteractable SelectedInteractable;
    IInteractable ManualSelectionInteractable;
    float SelectionIntensity;
    bool IsActivateEnabled;
    bool HasActivation;
    IInteractable ActivatedInteractable;
    float ActivationIntensity;
    IInteractionManager InteractionManager;
    HandPoser HandPoser;
    InteractionLayer InteractionLayer;
    Transform Transform;
    Rigidbody Rigidbody;
    List Colliders;
    UnityEvent<InteractorRegisterEventArgs> RegisterEntered;
    UnityEvent<InteractorDeregisterEventArgs> DeregisterEntered;
    UnityEvent<HoverEnterInteractionEventArgs> HoverEntered;
    UnityEvent<HoverExitInteractionEventArgs> HoverExited;
    UnityEvent<SelectEnterInteractionEventArgs> SelectEntered;
    UnityEvent<SelectExitInteractionEventArgs> SelectExited;
    UnityEvent<ActivateEnterInteractionEventArgs> ActivateEntered;
    UnityEvent<ActivateExitInteractionEventArgs> ActivateExited;
    bool IsHoverEnabled;
    bool HasHover;
    IInteractable HoveredInteractable;
    bool IsSelectEnabled;
    bool HasSelection;
    IInteractable ManualSelectionInteractable;
    float SelectionIntensity;
    IInteractable SelectedInteractable;
    bool IsActivateEnabled;
    bool HasActivation;
    float ActivationIntensity;
    IInteractable ActivatedInteractable;
    bool HandPoseVisualEnabled;
    bool IsInPoseArea;
    int HandPoseVisualizerIndex;

    // methods

    bool CanHover(IInteractable interactable);
    bool IsHovering(IInteractable interactable);
    bool HoverExit(IInteractable interactable);
    void OnHoverEnter(HoverEnterInteractionEventArgs args);
    void OnHoverEntered(HoverEnterInteractionEventArgs args);
    void OnHoverExit(HoverExitInteractionEventArgs args);
    void OnHoverExited(HoverExitInteractionEventArgs args);
    bool CanSelect(IInteractable interactable);
    bool IsSelecting(IInteractable interactable);
    bool SelectExit(IInteractable interactable);
    void OnSelectEnter(SelectEnterInteractionEventArgs args);
    void OnSelectEntered(SelectEnterInteractionEventArgs args);
    void OnSelectExit(SelectExitInteractionEventArgs args);
    void OnSelectExited(SelectExitInteractionEventArgs args);
    void StartManualSelection(IInteractable interactable);
    void StopManualSelection();
    bool CanActivate(IInteractable interactable);
    bool IsActivating(IInteractable interactable);
    bool ActivateExit(IInteractable interactable);
    void OnActivateEnter(ActivateEnterInteractionEventArgs args);
    void OnActivateEntered(ActivateEnterInteractionEventArgs args);
    void OnActivateExit(ActivateExitInteractionEventArgs args);
    void OnActivateExited(ActivateExitInteractionEventArgs args);
    void OnRegisterEnter(InteractorRegisterEventArgs args);
    void OnRegisterEntered(InteractorRegisterEventArgs args);
    void OnDeregisterEnter(InteractorDeregisterEventArgs args);
    void OnDeregisterEntered(InteractorDeregisterEventArgs args);
    void GetValidTargets(List<IInteractable> result);
    void PreprocessInteractor(UpdatePhase updatePhase);
    void ProcessInteractor(UpdatePhase updatePhase);
    virtual bool CanHover(IInteractable interactable);
    virtual bool CanSelect(IInteractable interactable);
    virtual bool CanActivate(IInteractable interactable);
    virtual void StartManualSelection(IInteractable interactable);
    virtual void StopManualSelection();
    virtual void AttachInteractorToInteractable();
    virtual void DetachInteractorToInteractable();
    void GetValidTargets(List<IInteractable> result);
    bool IsHovering(IInteractable interactable);
    bool HoverExit(IInteractable interactable);
    bool IsSelecting(IInteractable interactable);
    bool SelectExit(IInteractable interactable);
    bool IsActivating(IInteractable interactable);
    bool ActivateExit(IInteractable interactable);
    virtual void PreprocessInteractor(UpdatePhase updatePhase);
    virtual void ProcessInteractor(UpdatePhase updatePhase);
    void SetHandPose(HandPose pose);

    void SetHandPose(
        HandPose pose,
        float interpolationDuration,
        Action<HandPose> onInterpolationFinished
    );

    bool CreateAutomaticHandPose(HandPose pose, IInteractable interactable);
    void ResetDefaultHandPose();
    void GetCurrentHandPose(HandPose result);

Detailed Documentation

A tool (grabbable) that can interact with other grabbables.

Properties

HandPose IdlePose

Gets or sets the idle pose.

HandPose TriggerPose

Gets or sets the trigger pose.

Collider ToolCollider

Gets or sets the collider of the tool that detects other Interactables.

override bool IsHoverEnabled

Gets a value indicating whether this interactor should send hover events.

bool HandPoseVisualEnabled

Gets or sets a value indicating whether the hand pose visual is enabled.

override bool IsSelectEnabled

Gets a value indicating whether this interactor should send select event this frame.

Usually set by the controller input, when the grab button is pressed.

override float SelectionIntensity

Gets the intensity with which the controller’s selection button is pressed.

override float ActivationIntensity

Gets the intensity with which the controller’s activation button is pressed.

bool IsToolSelecting

Gets a value indicating whether the tool is currently selecting.

int HandPoseVisualizerIndex

Gets the index for the hand pose visualizer. Used to find the HandPoses for this visualizer.

IInteractable Interactable

Gets the Interacrable component of the current tool.

bool IsInPoseArea

Gets or sets a value indicating whether the interactor is inside a pose area.

Methods

virtual override bool CanHover(IInteractable interactable)

Gets if this interactor can send hover events to the interactable.

Parameters:

interactable

The interactable to check if this interactor can send the hover event to.

Returns:

true if the interactable can be hovered by this interactor.

virtual override bool CanSelect(IInteractable interactable)

Gets if this interactor can send select events to the interactable.

Parameters:

interactable

The interactable to check if this interactor can send the select event to.

Returns:

true if the interactable can be selected by this interactor.

virtual override bool CanActivate(IInteractable interactable)

Gets if this interactor can send activate events to the interactable.

Parameters:

interactable

The interactable to check if this interactor can send the activate event to.

Returns:

true if the interactable can be activated by this interactor.

virtual override void PreprocessInteractor(UpdatePhase updatePhase)

Called by the InteractionManager before the Interactor is processed by the interaction manager, in the given update phase.

Parameters:

updatePhase

The update phase this method is called.

virtual override void ProcessInteractor(UpdatePhase updatePhase)

Called by the InteractionManager after the Interactor is processed by the interaction manager, in the given update phase.

Parameters:

updatePhase

The update phase this method is called.

virtual override void AttachInteractorToInteractable()

Attaches the interactor on the interactable with the corresponding pose.

virtual override void DetachInteractorToInteractable()

Detaches the interactor from the interactable.

void SetHandPose(HandPose pose)

Sets the current pose to the given one.

Parameters:

pose

The pose to set.

bool CreateAutomaticHandPose(HandPose pose, IInteractable interactable)

Creates an automatic pose from the current position/rotation and stores it in pose.

Parameters:

pose

A handpose in which the generated pose will be stored to.

interactable

The interactable for which to create and automatic hand pose.

Returns:

If the automatic pose was generated successfully.

void ResetDefaultHandPose()

Resets the hand pose to the default.

Use it after calling SetHandPose(HandPose) in order to go back to the default hand pose.

void GetCurrentHandPose(HandPose result)

Gets the current hand pose and stores it in the given handpose result.

Parameters:

result

The handpose in which to store the result.

void SetMovementWithInteractable(bool enabled)

Enables tool movement with the interactable. This hides any physics jittering from the hand.

Parameters:

enabled

Whether to enable or disable movement with interactable.

override void GetValidTargets(List<IInteractable> result)

Returns the list of valid targets for this interactor in the current frame.

The result list is cleared before any interactables are added to it.

Parameters:

result

A list to put all the interactables this interactor may interact in this fram.

void ToggleSelection(bool enable)

Enables or disables the selection of the tool interactor.

Parameters:

enable

If true enables the selection, else it disables it.