class MAGES::Interaction::InteractionManager

Overview

The InteractionManager is responsible for managing the interaction between interactable objects and interactors. Many of the methods in IInteractable and IInteractor are called from here. More…

class InteractionManager:
    public MonoBehaviour,
    public MAGES::IInteractionManager
{
public:
    // properties

    HashSet<IInteractionManager> Managers;
    UnityEvent<IInteractionManager> RegisterManagerEnter;
    UnityEvent<IInteractionManager> DeregisterManagerEnter;
    UnityEvent<InteractorRegisterEventArgs> RegisterInteractorEnter;
    UnityEvent<InteractorDeregisterEventArgs> DeregisterInteractorEnter;
    UnityEvent<InteractableRegisterEventArgs> RegisterInteractableEnter;
    UnityEvent<InteractableDeregisterEventArgs> DeregisterInteractableEnter;
    UnityEvent<HoverEnterInteractionEventArgs> HoverEntered;
    UnityEvent<HoverExitInteractionEventArgs> HoverExited;
    UnityEvent<SelectEnterInteractionEventArgs> SelectEntered;
    UnityEvent<SelectExitInteractionEventArgs> SelectExited;
    UnityEvent<ActivateEnterInteractionEventArgs> ActivateEntered;
    UnityEvent<ActivateExitInteractionEventArgs> ActivateExited;

    // methods

    void RegisterManager(IInteractionManager manager);
    void DeregisterManager(IInteractionManager manager);
    bool RegisterInteractable(IInteractable interactable);
    void DeregisterInteractable(IInteractable interactable);
    bool RegisterInteractor(IInteractor interactor);
    void DeregisterInteractor(IInteractor interactor);
    void GetRegisteredInteractors(List<IInteractor> result);
    void GetRegisteredInteractables(List<IInteractable> result);
    bool IsInteractorRegistered(IInteractor interactor);
    bool IsInteractableRegistered(IInteractable interactable);
    bool TryGetInteractorFromCollider(Collider collider, out IInteractor interactor);

    bool TryGetInteractableFromCollider(
        Collider collider,
        out IInteractable interactable
    );

    bool HoverEnter(IInteractor interactor, IInteractable interactable);
    bool HoverExit(IInteractor interactor, IInteractable interactable);
    bool SelectEnter(IInteractor interactor, IInteractable interactable);
    bool SelectExit(IInteractor interactor, IInteractable interactable);
    bool ActivateEnter(IInteractor interactor, IInteractable interactable);
    bool ActivateExit(IInteractor interactor, IInteractable interactable);
};

Inherited Members

public:
    // properties

    UnityEvent<IInteractionManager> RegisterManagerEnter;
    UnityEvent<IInteractionManager> DeregisterManagerEnter;
    UnityEvent<InteractorRegisterEventArgs> RegisterInteractorEnter;
    UnityEvent<InteractorDeregisterEventArgs> DeregisterInteractorEnter;
    UnityEvent<InteractableRegisterEventArgs> RegisterInteractableEnter;
    UnityEvent<InteractableDeregisterEventArgs> DeregisterInteractableEnter;
    UnityEvent<HoverEnterInteractionEventArgs> HoverEntered;
    UnityEvent<HoverExitInteractionEventArgs> HoverExited;
    UnityEvent<SelectEnterInteractionEventArgs> SelectEntered;
    UnityEvent<SelectExitInteractionEventArgs> SelectExited;
    UnityEvent<ActivateEnterInteractionEventArgs> ActivateEntered;
    UnityEvent<ActivateExitInteractionEventArgs> ActivateExited;

    // methods

    bool RegisterInteractor(IInteractor interactor);
    bool RegisterInteractable(IInteractable interactable);
    void DeregisterInteractor(IInteractor interactor);
    void DeregisterInteractable(IInteractable interactable);
    void RegisterManager(IInteractionManager manager);
    void DeregisterManager(IInteractionManager manager);
    void GetRegisteredInteractors(List<IInteractor> result);
    void GetRegisteredInteractables(List<IInteractable> result);
    bool IsInteractorRegistered(IInteractor interactor);
    bool IsInteractableRegistered(IInteractable interactable);

    bool TryGetInteractableFromCollider(
        Collider collider,
        out IInteractable interactable
    );

    bool TryGetInteractorFromCollider(
        Collider collider,
        out IInteractor interactable
    );

    bool HoverEnter(IInteractor interactor, IInteractable interactable);
    bool HoverExit(IInteractor interactor, IInteractable interactable);
    bool SelectEnter(IInteractor interactor, IInteractable interactable);
    bool SelectExit(IInteractor interactor, IInteractable interactable);
    bool ActivateEnter(IInteractor interactor, IInteractable interactable);
    bool ActivateExit(IInteractor interactor, IInteractable interactable);

Detailed Documentation

The InteractionManager is responsible for managing the interaction between interactable objects and interactors. Many of the methods in IInteractable and IInteractor are called from here.

Properties

HashSet<IInteractionManager> Managers

Gets all the active interaction managers.

UnityEvent<IInteractionManager> RegisterManagerEnter

Gets the event called when a manager is registered.

UnityEvent<IInteractionManager> DeregisterManagerEnter

Gets the event called when a manager is deregistered.

UnityEvent<InteractorRegisterEventArgs> RegisterInteractorEnter

Gets the event called when an IInteractor is registered.

UnityEvent<InteractorDeregisterEventArgs> DeregisterInteractorEnter

Gets the event called when an IInteractor is deregistered.

UnityEvent<InteractableRegisterEventArgs> RegisterInteractableEnter

Gets the event called when an IInteractable is registered.

UnityEvent<InteractableDeregisterEventArgs> DeregisterInteractableEnter

Gets the event called when an IInteractable is deregistered.

UnityEvent<HoverEnterInteractionEventArgs> HoverEntered

Gets the event called when an IInteractor starts hovering an IInteractable.

UnityEvent<HoverExitInteractionEventArgs> HoverExited

Gets the event called when an IInteractor stops hovering an IInteractable.

UnityEvent<SelectEnterInteractionEventArgs> SelectEntered

Gets the event called when an IInteractor starts selecting an IInteractable.

UnityEvent<SelectExitInteractionEventArgs> SelectExited

Gets the event called when an IInteractor stops selecting an IInteractable.

UnityEvent<ActivateEnterInteractionEventArgs> ActivateEntered

Gets the event called when an IInteractor starts activating an IInteractable.

UnityEvent<ActivateExitInteractionEventArgs> ActivateExited

Gets the event called when an IInteractor stops activating an IInteractable.

Methods

void RegisterManager(IInteractionManager manager)

Registers a manager.

Usually all the IInteractionManagers are kept in a static collection, to be easily accessible. This method should be called when the manager is enabled in order to add it to this list.

Parameters:

manager

The manager.

void DeregisterManager(IInteractionManager manager)

Deregisters a manager.

Parameters:

manager

The manager to deregister.

See also:

RegisterManager(IInteractionManager)

bool RegisterInteractable(IInteractable interactable)

Registers the interactable with the manager.

Parameters:

interactable

The interactable to register.

Returns:

true if the internal registration list changes (i.e. the interactable is not already registered).

void DeregisterInteractable(IInteractable interactable)

Deregisters the interactable from the manager.

Parameters:

interactable

The interactable to deregister.

bool RegisterInteractor(IInteractor interactor)

Registers the interactor with the manager.

Parameters:

interactor

The interactor to register.

Returns:

true if the internal registration list changes (i.e. the interactor is not already registered).

void DeregisterInteractor(IInteractor interactor)

Deregisters the interactor from the manager.

Parameters:

interactor

The interactor to deregister.

void GetRegisteredInteractors(List<IInteractor> result)

Gets all the registered interactors with this manager.

Parameters:

result

The list to put the result. It will be cleared before adding to it.

void GetRegisteredInteractables(List<IInteractable> result)

Gets all the registered interactables with this manager.

Parameters:

result

The list to put the result. It will be cleared before adding to it.

bool IsInteractorRegistered(IInteractor interactor)

Gets if the interactor is registered with this manager.

Parameters:

interactor

The interactor to check if registered.

Returns:

true if the interactor is registered with this manager.

bool IsInteractableRegistered(IInteractable interactable)

Gets if the interactable is registered with this manager.

Parameters:

interactable

The interactable to check if registered.

Returns:

true if the interactable is registered with this manager.

bool TryGetInteractorFromCollider(Collider collider, out IInteractor interactor)

Tries to get the IInteractor that has the given collider.

Parameters:

collider

The interactor’s collider.

interactable

The interactor, if found.

Returns:

true if an interactor with the given collider was found.

bool TryGetInteractableFromCollider(
    Collider collider,
    out IInteractable interactable
)

Tries to get the IInteractable that has the given collider.

Parameters:

collider

The interactable’s collider.

interactable

The interactable, if found.

Returns:

true if an interactable with the given collider was found.

bool HoverEnter(IInteractor interactor, IInteractable interactable)

Sends the hover enter event to the given interactable and interactor.

Parameters:

interactor

The interactor.

interactable

The interactable.

Returns:

true on success.

bool HoverExit(IInteractor interactor, IInteractable interactable)

Sends the hover exit event to the given interactable and interactor.

Parameters:

interactor

The interactor.

interactable

The interactable.

Returns:

true on success.

bool SelectEnter(IInteractor interactor, IInteractable interactable)

Sends the select enter event to the given interactable and interactor.

Parameters:

interactor

The interactor.

interactable

The interactable.

Returns:

true on success.

bool SelectExit(IInteractor interactor, IInteractable interactable)

Sends the seelct exit event to the given interactable and interactor.

Parameters:

interactor

The interactor.

interactable

The interactable.

Returns:

true on success.

bool ActivateEnter(IInteractor interactor, IInteractable interactable)

Sends the activate enter event to the given interactable and interactor.

Parameters:

interactor

The interactor.

interactable

The interactable.

Returns:

true on success.

bool ActivateExit(IInteractor interactor, IInteractable interactable)

Sends the activate exit event to the given interactable and interactor.

Parameters:

interactor

The interactor.

interactable

The interactable.

Returns:

true on success.