Class XRTargetFilter
Target Filter that uses a list of evaluator objects to filter Interactable targets (candidates) returned by the Interactor each frame. You can edit the evaluator list and the evaluators properties in the Inspector.
Inherited Members
Namespace: UnityEngine.XR.Interaction.Toolkit.Filtering
Assembly: Unity.XR.Interaction.Toolkit.dll
Syntax
[AddComponentMenu("XR/XR Target Filter", 11)]
[HelpURL("https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@3.0/api/UnityEngine.XR.Interaction.Toolkit.Filtering.XRTargetFilter.html")]
public sealed class XRTargetFilter : XRBaseTargetFilter, IXRTargetFilter, IEnumerable<XRTargetEvaluator>, IEnumerable
Remarks
The virtual and abstract methods on the Target Evaluators are designed to be called by this Filter rather than being called directly by the user in order to maintain consistency between all objects involved in the filtering of an interaction.
Properties
canProcess
Whether this Target Filter can process and filter targets. Filters that can process targets receive calls to Process(IXRInteractor, List<IXRInteractable>, List<IXRInteractable>), filters that cannot process do not.
Declaration
public override bool canProcess { get; }
Property Value
Type | Description |
---|---|
bool |
Overrides
See Also
evaluatorCount
The number of evaluators this filter has.
Declaration
public int evaluatorCount { get; }
Property Value
Type | Description |
---|---|
int |
See Also
Methods
AddEvaluator(Type)
Adds an instance of the given evaluator type to this filter.
Declaration
public XRTargetEvaluator AddEvaluator(Type evaluatorType)
Parameters
Type | Name | Description |
---|---|---|
Type | evaluatorType | Type of the evaluator to be added. |
Returns
Type | Description |
---|---|
XRTargetEvaluator | The added evaluator or null if the instance could not be added. |
Remarks
If the filter is processing the added evaluator will only participate from the next filtering process.
See Also
AddEvaluator<T>()
Adds an instance of the given evaluator type to this filter.
Declaration
public T AddEvaluator<T>() where T : XRTargetEvaluator
Returns
Type | Description |
---|---|
T | The added evaluator or null if the instance could not be added. |
Type Parameters
Name | Description |
---|---|
T | Type of the evaluator to be added. |
Remarks
If the filter is processing the added evaluator will only participate from the next filtering process.
See Also
GetEnabledEvaluators(List<XRTargetEvaluator>)
Returns the enabled evaluators in this filter.
Declaration
public void GetEnabledEvaluators(List<XRTargetEvaluator> results)
Parameters
Type | Name | Description |
---|---|---|
List<XRTargetEvaluator> | results | List to receive the results. |
Remarks
Clears results
before adding to it.
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
See Also
GetEnumerator()
Returns an enumerator to iterate through the evaluators in this Target Filter.
Declaration
public IEnumerator<XRTargetEvaluator> GetEnumerator()
Returns
Type | Description |
---|---|
IEnumerator<XRTargetEvaluator> | Returns an |
See Also
GetEvaluator(Type)
Returns the first Target Evaluator of the specified type
if this Target Filter has one.
Declaration
public XRTargetEvaluator GetEvaluator(Type type)
Parameters
Type | Name | Description |
---|---|---|
Type | type | The Type of the Evaluator to retrieve. |
Returns
Type | Description |
---|---|
XRTargetEvaluator | Returns the first Evaluator of the specified |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
See Also
GetEvaluatorAt(int)
Gets the evaluator in the given index.
Declaration
public XRTargetEvaluator GetEvaluatorAt(int index)
Parameters
Type | Name | Description |
---|---|---|
int | index | Index of the evaluator to return. Must be smaller than evaluatorCount and not negative. |
Returns
Type | Description |
---|---|
XRTargetEvaluator | The evaluator in the given index. |
Remarks
The total number of evaluators can be provided by evaluatorCount.
See Also
GetEvaluator<T>()
Returns the first Target Evaluator of the specified Type if this Target Filter has one.
Declaration
public T GetEvaluator<T>()
Returns
Type | Description |
---|---|
T | Returns the first Evaluator of the specified Type. Returns null if this Filter has no Evaluator of the specified Type in it. |
Type Parameters
Name | Description |
---|---|
T | The Type of the Evaluator to retrieve. |
Remarks
Generic version of GetEvaluator(Type).
See Also
GetEvaluators(List<XRTargetEvaluator>)
Returns the evaluators in this filter.
Declaration
public void GetEvaluators(List<XRTargetEvaluator> results)
Parameters
Type | Name | Description |
---|---|---|
List<XRTargetEvaluator> | results | List to receive the results. |
Remarks
Clears results
before adding to it.
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
See Also
GetLinkedInteractors(List<IXRInteractor>)
Returns the Interactors linked to this filter.
Declaration
public void GetLinkedInteractors(List<IXRInteractor> results)
Parameters
Type | Name | Description |
---|---|---|
List<IXRInteractor> | results | List to receive the results. |
Remarks
Clears results
before adding to it.
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
See Also
Link(IXRInteractor)
Called by Unity when the given Interactor links to this filter. Use this to do any code initialization for the given Interactor.
Declaration
public override void Link(IXRInteractor interactor)
Parameters
Type | Name | Description |
---|---|---|
IXRInteractor | interactor | The Interactor being linked to this filter. |
Overrides
See Also
MoveEvaluatorTo(XRTargetEvaluator, int)
Moves the given evaluator to the given index.
Declaration
public void MoveEvaluatorTo(XRTargetEvaluator evaluator, int newIndex)
Parameters
Type | Name | Description |
---|---|---|
XRTargetEvaluator | evaluator | Evaluator to update the index. |
int | newIndex | New index of the evaluator. |
See Also
Process(IXRInteractor, List<IXRInteractable>, List<IXRInteractable>)
Called by the linked Interactor to filter the Interactables that it could possibly interact with this frame. Implement your custom logic to filter the Interactable candidates in this method.
Declaration
public override void Process(IXRInteractor interactor, List<IXRInteractable> targets, List<IXRInteractable> results)
Parameters
Type | Name | Description |
---|---|---|
IXRInteractor | interactor | The linked Interactor whose Interactable candidates (or targets) are being filtered. |
List<IXRInteractable> | targets | The read only list of candidate Interactables to filter. This list should not be modified. |
List<IXRInteractable> | results | The results list to populate with the filtered results. This list should be sorted by priority (with highest priority first). |
Overrides
Remarks
It's recommended to call this from an implementation of GetValidTargets(List<IXRInteractable>).
Exceptions
Type | Condition |
---|---|
InvalidOperationException | Throws when this filter is currently processing and filtering Interactables. |
See Also
RemoveEvaluator(XRTargetEvaluator)
Removes the given evaluator from this filter. The evaluator being removed is disabled and disposed.
Declaration
public void RemoveEvaluator(XRTargetEvaluator evaluator)
Parameters
Type | Name | Description |
---|---|---|
XRTargetEvaluator | evaluator | Evaluator to be removed. |
Remarks
You cannot call this method while the filter is processing.
See Also
RemoveEvaluatorAt(int)
Removes the evaluator at the given index from this filter. The evaluator being removed is disabled and disposed.
Declaration
public void RemoveEvaluatorAt(int index)
Parameters
Type | Name | Description |
---|---|---|
int | index | Index of the evaluator to be removed. Must be smaller than evaluatorCount and not negative. |
Remarks
The total number of evaluators can be provided by evaluatorCount. You cannot call this method while the filter is processing.
See Also
Unlink(IXRInteractor)
Called by Unity when the given Interactor unlinks from this filter. Use this to do any code cleanup for the given Interactor.
Declaration
public override void Unlink(IXRInteractor interactor)
Parameters
Type | Name | Description |
---|---|---|
IXRInteractor | interactor | The Interactor being unlinked from this filter. |
Overrides
Remarks
You cannot call this method while the filter is processing.
Exceptions
Type | Condition |
---|---|
InvalidOperationException | Throws when this filter is currently processing and filtering Interactables. |
See Also
Events
interactorLinked
Calls the methods in this invocation when this filter is linked to an Interactor.
Declaration
public event Action<IXRInteractor> interactorLinked
Event Type
Type | Description |
---|---|
Action<IXRInteractor> |
See Also
interactorUnlinked
Calls the methods in this invocation when this filter is unlinked from an Interactor.
Declaration
public event Action<IXRInteractor> interactorUnlinked
Event Type
Type | Description |
---|---|
Action<IXRInteractor> |