Class XRInteractionGroup
Behaviour implementation of IXRInteractionGroup. An Interaction Group hooks into the interaction system (via XRInteractionManager) and enforces that only one IXRGroupMember within the Group can interact at a time. Each Group member must be either an IXRInteractor or an IXRInteractionGroup.
Inherited Members
Namespace: UnityEngine.XR.Interaction.Toolkit
Syntax
[DisallowMultipleComponent]
[AddComponentMenu("XR/XR Interaction Group", 11)]
[HelpURL("https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@2.3/api/UnityEngine.XR.Interaction.Toolkit.XRInteractionGroup.html")]
[DefaultExecutionOrder(-100)]
public class XRInteractionGroup : MonoBehaviour, IXRInteractionGroup, IXRGroupMember
Remarks
The member prioritized for interaction in any given frame is whichever member was interacting the previous frame if it can select in the current frame. If there is no such member, then the interacting member is whichever one in the ordered list of members interacts first.
Properties
activeInteractor
The Interactor in this Interaction Group or any of its member Groups that is currently performing interaction.
Declaration
public IXRInteractor activeInteractor { get; }
Property Value
Type | Description |
---|---|
IXRInteractor |
Implements
containingGroup
The Interaction Group that contains this member.
Declaration
public IXRInteractionGroup containingGroup { get; }
Property Value
Type | Description |
---|---|
IXRInteractionGroup |
Implements
interactionManager
The XRInteractionManager that this Interaction Group will communicate with (will find one if null).
Declaration
public XRInteractionManager interactionManager { get; set; }
Property Value
Type | Description |
---|---|
XRInteractionManager |
startingGroupMembers
Ordered list of Interactors or Interaction Groups that are registered with the Group on Awake. All objects in this list should implement the IXRGroupMember interface and either the IXRInteractor interface or the IXRInteractionGroup interface.
Declaration
public List<Object> startingGroupMembers { get; set; }
Property Value
Type | Description |
---|---|
List<Object> |
Remarks
There are separate methods to access and modify the Group members used after Awake.
See Also
Methods
AddGroupMember(IXRGroupMember)
Adds the given Group member to the end of the ordered list of members in the Group. Causes no change if the Group member is already added.
Declaration
public void AddGroupMember(IXRGroupMember groupMember)
Parameters
Type | Name | Description |
---|---|---|
IXRGroupMember | groupMember | The Group member to add. |
Implements
Remarks
groupMember
must implement either IXRInteractor or IXRInteractionGroup.
Awake()
See MonoBehaviour.
Declaration
protected virtual void Awake()
ClearGroupMembers()
Removes all Group members from the list of members.
Declaration
public void ClearGroupMembers()
Implements
ContainsGroupMember(IXRGroupMember)
Checks whether the given Group member exists in the list of members.
Declaration
public bool ContainsGroupMember(IXRGroupMember groupMember)
Parameters
Type | Name | Description |
---|---|---|
IXRGroupMember | groupMember | The Group member to check for in the list. |
Returns
Type | Description |
---|---|
Boolean | Returns true if |
Implements
GetGroupMembers(List<IXRGroupMember>)
Returns all members in the ordered list of Group members into List results
.
Declaration
public void GetGroupMembers(List<IXRGroupMember> results)
Parameters
Type | Name | Description |
---|---|---|
List<IXRGroupMember> | results | List to receive Group members. |
Implements
Remarks
This method populates the list with the Group members at the time the method is called. It is not a live view,
meaning Group members added or removed afterward will not be reflected in the results of this method.
Clears results
before adding to it.
HasDependencyOnGroup(IXRInteractionGroup)
Checks whether the given Group is either the same as this Group or a dependency of any member Group.
Declaration
public bool HasDependencyOnGroup(IXRInteractionGroup group)
Parameters
Type | Name | Description |
---|---|---|
IXRInteractionGroup | group | The Group to check for as a dependency. |
Returns
Type | Description |
---|---|
Boolean | Returns true if |
Implements
MoveGroupMemberTo(IXRGroupMember, Int32)
Moves the given Group member to the specified index in the ordered list of members in the Group. If the member is not in the list, this can be used to insert the member at the specified index.
Declaration
public void MoveGroupMemberTo(IXRGroupMember groupMember, int newIndex)
Parameters
Type | Name | Description |
---|---|---|
IXRGroupMember | groupMember | The Group member to move or add. |
Int32 | newIndex | New index of the Group member. |
Implements
Remarks
groupMember
must implement either IXRInteractor or IXRInteractionGroup.
OnDestroy()
See MonoBehaviour.
Declaration
protected virtual void OnDestroy()
OnDisable()
See MonoBehaviour.
Declaration
protected virtual void OnDisable()
OnEnable()
See MonoBehaviour.
Declaration
protected virtual void OnEnable()
RemoveGroupMember(IXRGroupMember)
Removes the given Group member from the list of members.
Declaration
public bool RemoveGroupMember(IXRGroupMember groupMember)
Parameters
Type | Name | Description |
---|---|---|
IXRGroupMember | groupMember | The Group member to remove. |
Returns
Type | Description |
---|---|
Boolean | Returns true if |
Implements
Reset()
See MonoBehaviour.
Declaration
[Conditional("UNITY_EDITOR")]
protected virtual void Reset()
Events
registered
Calls the methods in its invocation list when this Interaction Group is registered with an Interaction Manager.
Declaration
public event Action<InteractionGroupRegisteredEventArgs> registered
Event Type
Type | Description |
---|---|
Action<InteractionGroupRegisteredEventArgs> |
Implements
Remarks
The InteractionGroupRegisteredEventArgs passed to each listener is only valid while the event is invoked, do not hold a reference to it.
See Also
unregistered
Calls the methods in its invocation list when this Interaction Group is unregistered from an Interaction Manager.
Declaration
public event Action<InteractionGroupUnregisteredEventArgs> unregistered
Event Type
Type | Description |
---|---|
Action<InteractionGroupUnregisteredEventArgs> |
Implements
Remarks
The InteractionGroupUnregisteredEventArgs passed to each listener is only valid while the event is invoked, do not hold a reference to it.
See Also
Explicit Interface Implementations
IXRGroupMember.OnRegisteringAsGroupMember(IXRInteractionGroup)
An IXRInteractionGroup calls this method just after this member has been added to the Group's list or just after the Group has registered with the XRInteractionManager. This method is called just before the member is re-registered with the Interaction Manager so that it can be registered as being part of a Group.
Declaration
void IXRGroupMember.OnRegisteringAsGroupMember(IXRInteractionGroup group)
Parameters
Type | Name | Description |
---|---|---|
IXRInteractionGroup | group | The Interaction Group that this member is now a part of. |
Implements
Remarks
Implementations of this method should ensure that containingGroup returns group
after this method is called.
IXRGroupMember.OnRegisteringAsNonGroupMember()
An IXRInteractionGroup calls this method just after this member has been removed from the Group's list or before the Group unregisters with the XRInteractionManager. This method is called just before the member is re-registered with the Interaction Manager so that it can be registered as being not part of a Group.
Declaration
void IXRGroupMember.OnRegisteringAsNonGroupMember()
Implements
Remarks
Implementations of this method should ensure that containingGroup returns null after this method is called.
IXRInteractionGroup.OnBeforeUnregistered()
The XRInteractionManager calls this method just before this Interaction Group is unregistered from it.
Declaration
void IXRInteractionGroup.OnBeforeUnregistered()
Implements
Remarks
This is where the Group should re-register its members with the Interaction Manager so that they are registered as not belonging to a Group.
See Also
IXRInteractionGroup.OnRegistered(InteractionGroupRegisteredEventArgs)
The XRInteractionManager calls this method when this Interaction Group is registered with it.
Declaration
void IXRInteractionGroup.OnRegistered(InteractionGroupRegisteredEventArgs args)
Parameters
Type | Name | Description |
---|---|---|
InteractionGroupRegisteredEventArgs | args | Event data containing the Interaction Manager that registered this Interaction Group. |
Implements
Remarks
args
is only valid during this method call, do not hold a reference to it.
See Also
IXRInteractionGroup.OnUnregistered(InteractionGroupUnregisteredEventArgs)
The XRInteractionManager calls this method when this Interaction Group is unregistered from it.
Declaration
void IXRInteractionGroup.OnUnregistered(InteractionGroupUnregisteredEventArgs args)
Parameters
Type | Name | Description |
---|---|---|
InteractionGroupUnregisteredEventArgs | args | Event data containing the Interaction Manager that unregistered this Interaction Group. |
Implements
Remarks
args
is only valid during this method call, do not hold a reference to it.
See Also
IXRInteractionGroup.PreprocessGroupMembers(XRInteractionUpdateOrder.UpdatePhase)
The XRInteractionManager or containing IXRInteractionGroup calls this method to update the Group and its members before interaction events occur.
Declaration
void IXRInteractionGroup.PreprocessGroupMembers(XRInteractionUpdateOrder.UpdatePhase updatePhase)
Parameters
Type | Name | Description |
---|---|---|
XRInteractionUpdateOrder.UpdatePhase | updatePhase | The update phase during which this method is called. |
Implements
Remarks
Please see the XRInteractionManager and XRInteractionUpdateOrder.UpdatePhase documentation for more details on update order.
See Also
IXRInteractionGroup.ProcessGroupMembers(XRInteractionUpdateOrder.UpdatePhase)
The XRInteractionManager or containing IXRInteractionGroup calls this method to update the Group and its members after interaction events occur.
Declaration
void IXRInteractionGroup.ProcessGroupMembers(XRInteractionUpdateOrder.UpdatePhase updatePhase)
Parameters
Type | Name | Description |
---|---|---|
XRInteractionUpdateOrder.UpdatePhase | updatePhase | The update phase during which this method is called. |
Implements
Remarks
Please see the XRInteractionManager and XRInteractionUpdateOrder.UpdatePhase documentation for more details on update order.
See Also
IXRInteractionGroup.UpdateGroupMemberInteractions()
The XRInteractionManager calls this method to update interactions for this Group's members. This is where interaction events occur for any IXRInteractor member.
Declaration
void IXRInteractionGroup.UpdateGroupMemberInteractions()
Implements
Remarks
The implementation of this method should call UpdateGroupMemberInteractions(IXRInteractor, out IXRInteractor).
IXRInteractionGroup.UpdateGroupMemberInteractions(IXRInteractor, out IXRInteractor)
Updates interactions for this Group's members, given an Interactor that has already been prioritized for interaction. This is where interaction events occur for any IXRInteractor member.
Declaration
void IXRInteractionGroup.UpdateGroupMemberInteractions(IXRInteractor prePrioritizedInteractor, out IXRInteractor interactorThatPerformedInteraction)
Parameters
Type | Name | Description |
---|---|---|
IXRInteractor | prePrioritizedInteractor | The Interactor that has already been prioritized for interaction. If not null, this prevents all other members in this Group from interacting. |
IXRInteractor | interactorThatPerformedInteraction | The Interactor in this Group or any of its member Groups that performed interaction as a result of this method call. This will be null if no Interactor performed interaction. |
Implements
Remarks
The implementation of this method should call this method on each member that is an IXRInteractionGroup.
After this method is called, activeInteractor should return the same reference as
interactorThatPerformedInteraction
.