API reference
API reference
Select your platform
No SDKs available
No versions available

PokeInteractable Class

Defines a near-poke interaction target that is driven by a near-distance proximity computation and a raycast between the position recorded across two frames against a target surface.
The interactor type for this interactable is PokeInteractor.

Properties

CancelSelectNormal : float
[Get][Set]
If greater than zero, the distance required for a selecting PokeInteractor to cancel selection, measured along the negative normal to the surface (in meters).
Signature
float Oculus.Interaction.PokeInteractable.CancelSelectNormal
CancelSelectTangent : float
[Get][Set]
If greater than zero, the distance required for a selecting PokeInteractor to cancel selection, measured along the tangent plane to the surface (in meters).
Signature
float Oculus.Interaction.PokeInteractable.CancelSelectTangent
CloseDistanceThreshold : float
[Get][Set]
The threshold below which distances near this surface are treated as equal in depth for the purposes of ranking, in world-space meters.
Signature
float Oculus.Interaction.PokeInteractable.CloseDistanceThreshold
DragThresholds : DragThresholdsConfig
[Get][Set]
The DragThresholdsConfig for this interactable instance.
This value is typically set from the UnityEditor, but it can also be set and modified programmatically.
Signature
DragThresholdsConfig Oculus.Interaction.PokeInteractable.DragThresholds
EnterHoverNormal : float
[Get][Set]
The distance required for a PokeInteractor to enter hovering, measured along the tangent plane to the surface (in meters).
Signature
float Oculus.Interaction.PokeInteractable.EnterHoverNormal
EnterHoverTangent : float
[Get][Set]
The distance required for a PokeInteractor to enter hovering, measured along the tangent plane to the surface (in meters).
Signature
float Oculus.Interaction.PokeInteractable.EnterHoverTangent
ExitHoverNormal : float
[Get][Set]
The distance required for a PokeInteractor to exit hovering, measured along the normal to the surface (in meters).
Signature
float Oculus.Interaction.PokeInteractable.ExitHoverNormal
ExitHoverTangent : float
[Get][Set]
The distance required for a PokeInteractor to exit hovering, measured along the tangent plane to the surface (in meters).
Signature
float Oculus.Interaction.PokeInteractable.ExitHoverTangent
MinThresholds : MinThresholdsConfig
[Get][Set]
The MinThresholdsConfig for this interactable instance.
This value is typically set from the UnityEditor, but it can also be set and modified programmatically.
Signature
MinThresholdsConfig Oculus.Interaction.PokeInteractable.MinThresholds
PositionPinning : PositionPinningConfig
[Get][Set]
The PositionPinningConfig for this interactable instance.
This value is typically set from the UnityEditor, but it can also be set and modified programmatically.
Signature
PositionPinningConfig Oculus.Interaction.PokeInteractable.PositionPinning
RecoilAssist : RecoilAssistConfig
[Get][Set]
The RecoilAssistConfig for this interactable instance.
This value is typically set from the UnityEditor, but it can also be set and modified programmatically.
Signature
RecoilAssistConfig Oculus.Interaction.PokeInteractable.RecoilAssist
SurfacePatch : ISurfacePatch
[Get]
An ISurfacePatch, which provides both the backing surface (generally infinite) and pokable area (generally finite) of the interactor.
Signature
ISurfacePatch Oculus.Interaction.PokeInteractable.SurfacePatch
TiebreakerScore : int
[Get][Set]
If a PokeInteractor is positioned near multiple interactables such that it is equally interactable with any of them (i.e., the distances to all of them are within CloseDistanceThreshold of each other), the interactable with the largest TiebreakerScore wins and is targeted for interaction.
If there's a tie for largest TiebreakerScore, one of the interactables will be selected arbitrarily.
Signature
int Oculus.Interaction.PokeInteractable.TiebreakerScore

Protected Methods

Awake ()
Signature
override void Oculus.Interaction.PokeInteractable.Awake()
Returns
override void
Start ()
Signature
override void Oculus.Interaction.PokeInteractable.Start()
Returns
override void

Methods

ClosestBackingSurfaceHit ( point , hit )
Convenience method wrapping a call to ISurface.ClosestSurfacePoint(in Vector3, out SurfaceHit, float) on the ISurfacePatch.BackingSurface of this interactable's SurfacePatch.
Signature
bool Oculus.Interaction.PokeInteractable.ClosestBackingSurfaceHit(Vector3 point, out SurfaceHit hit)
Parameters
point: Vector3  The point, in world space, for which the nearest point on the surface must be found
hit: out SurfaceHit  The returned hit data in world space if a nearest point could be found, default otherwise
Returns
bool  True if the racyast hit the surface, false otherwise
ClosestSurfacePatchHit ( point , hit )
Convenience method wrapping a call to ISurface.ClosestSurfacePoint(in Vector3, out SurfaceHit, float) on the SurfacePatch.
Signature
bool Oculus.Interaction.PokeInteractable.ClosestSurfacePatchHit(Vector3 point, out SurfaceHit hit)
Parameters
point: Vector3  The point, in world space, for which the nearest point on the surface must be found
hit: out SurfaceHit  The returned hit data in world space if a nearest point could be found, default otherwise
Returns
bool  True if the racyast hit the surface, false otherwise
InjectAllPokeInteractable ( surfacePatch )
Sets all the required values for a PokeInteractable on a dynamically instantiated GameObject.
This method exists to support Interaction SDK's dependency injection pattern and is not needed for typical Unity Editor-based usage.
Signature
void Oculus.Interaction.PokeInteractable.InjectAllPokeInteractable(ISurfacePatch surfacePatch)
Parameters
surfacePatch: ISurfacePatch
Returns
void
InjectSurfacePatch ( surfacePatch )
Sets a surface patch for a dynamically instantiated GameObject.
This method exists to support Interaction SDK's dependency injection pattern and is not needed for typical Unity Editor-based usage.
Signature
void Oculus.Interaction.PokeInteractable.InjectSurfacePatch(ISurfacePatch surfacePatch)
Parameters
surfacePatch: ISurfacePatch
Returns
void

Inner Classes

DragThresholdsConfig Class

Configures the drag thresholds, which are useful for distinguishing between press and drag and suppressing move pointer events when a PokeInteractor follows a pressing motion.
This configuration can vary by instance and can be set either through the UnityEditor or by programmatically setting the PokeInteractable.DragThresholds property.

Fields

DragEaseCurve : ProgressCurve
The curve that a PokeInteractor will use to ease when transitioning between a press and drag state.
Signature
ProgressCurve Oculus.Interaction.PokeInteractable.DragThresholdsConfig.DragEaseCurve
DragNormal : float
The distance a PokeInteractor must travel to be treated as a press, measured along the normal to the surface (in meters).
Signature
float Oculus.Interaction.PokeInteractable.DragThresholdsConfig.DragNormal
DragTangent : float
The distance a PokeInteractor must travel to be treated as a press, measured along the tangent plane to the surface (in meters
Signature
float Oculus.Interaction.PokeInteractable.DragThresholdsConfig.DragTangent
Enabled : bool
Sets whether or not this config block is enabled.
If disabled, all values will be ignored and default behavior will apply.
Signature
bool Oculus.Interaction.PokeInteractable.DragThresholdsConfig.Enabled

MinThresholdsConfig Class

Configures the minimum distance required for a PokeInteractor to surpass before it can hover a PokeInteractable.
This configuration can vary by instance and can be set either through the UnityEditor or by programmatically setting the PokeInteractable.MinThresholds property.

Fields

Enabled : bool
Sets whether or not this config block is enabled.
If disabled, all values will be ignored and default behavior will apply.
Signature
bool Oculus.Interaction.PokeInteractable.MinThresholdsConfig.Enabled
MinNormal : float
The minimum distance required for a PokeInteractor to surpass before being able to hover, measured along the normal to the surface (in meters).
Signature
float Oculus.Interaction.PokeInteractable.MinThresholdsConfig.MinNormal

PositionPinningConfig Class

Position pinning is applied to surface motion during drag, which is useful for adding a sense of friction to initial drag motion.
This configuration can vary by instance and can be set either through the UnityEditor or by programmatically setting the PokeInteractable.PositionPinning property.

Fields

Enabled : bool
Sets whether or not this config block is enabled.
If disabled, all values will be ignored and default behavior will apply.
Signature
bool Oculus.Interaction.PokeInteractable.PositionPinningConfig.Enabled
MaxPinDistance : float
The distance over which a PokeInteractor drag motion will be remapped to the surface (in meters).
If the hand is detected to move along this surface less than this value, those movements will be ignored; this can help to eliminate noise and reduce the degree to which poking feels "slippery."
Signature
float Oculus.Interaction.PokeInteractable.PositionPinningConfig.MaxPinDistance
PinningEaseCurve : AnimationCurve
The PokeInteractor position will be remapped along this curve from the initial touch point to the current position on surface.
Signature
AnimationCurve Oculus.Interaction.PokeInteractable.PositionPinningConfig.PinningEaseCurve
ResyncCurve : ProgressCurve
In cases where a resync is necessary between the pinned position and the unpinned position, this time-based curve will be used.
Signature
ProgressCurve Oculus.Interaction.PokeInteractable.PositionPinningConfig.ResyncCurve

RecoilAssistConfig Class

Recoil assist will affect unselection and reselection criteria, which is useful for triggering unselect in response to a smaller motion in the negative direction from a surface.
This configuration can vary by instance and can be set either through the UnityEditor or by programmatically setting the PokeInteractable.RecoilAssist property.

Fields

DynamicDecayCurve : AnimationCurve
A Unity AnimationCurve of the normal movement ratio to determine the rate of decay.
Signature
AnimationCurve Oculus.Interaction.PokeInteractable.RecoilAssistConfig.DynamicDecayCurve
Enabled : bool
Sets whether or not this config block is enabled.
If disabled, all values will be ignored and default behavior will apply.
Signature
bool Oculus.Interaction.PokeInteractable.RecoilAssistConfig.Enabled
ExitDistance : float
The distance over which a poke interactor must surpass to trigger an early unselect, measured along the normal to the surface (in meters).
Signature
float Oculus.Interaction.PokeInteractable.RecoilAssistConfig.ExitDistance
ReEnterDistance : float
When in recoil, the distance which a poke interactor must surpass to trigger a subsequent select, measured along the negative normal to the surface (in meters).
Signature
float Oculus.Interaction.PokeInteractable.RecoilAssistConfig.ReEnterDistance
UseDynamicDecay : bool
If true, DynamicDecayCurve will be used to decay the max distance based on the normal velocity.
Otherwise, default behavior will apply.
Signature
bool Oculus.Interaction.PokeInteractable.RecoilAssistConfig.UseDynamicDecay
UseVelocityExpansion : bool
Expand recoil window when fast Z motion is detected.
When poking a surface rapidly, users are much more likely to over-penetrate to move their hands spatially further past the virtual PokeInteractable.SurfacePatch than they might normally do, simply because they're moving fast. Under such circumstances, both motion tracking and user proprioception tend to contain large spatial errors, and typical interaction windows may consequently be inadequate in such scenarios. This leads to the concept of "velocity expansion," which pads or "expands" the error margins for certain interaction parameters (notably recoil assist) based on the velocity of the user's interaction.
Signature
bool Oculus.Interaction.PokeInteractable.RecoilAssistConfig.UseVelocityExpansion
VelocityExpansionDecayRate : float
Window will contract toward ExitDistance at this rate (in meters) per second when velocity lowers.
See UseVelocityExpansion for a more detailed overview of what "velocity expansion" means.
Signature
float Oculus.Interaction.PokeInteractable.RecoilAssistConfig.VelocityExpansionDecayRate
VelocityExpansionDistance : float
Window will expand by this distance when Z velocity reaches max speed.
See UseVelocityExpansion for a more detailed overview of what "velocity expansion" means.
Signature
float Oculus.Interaction.PokeInteractable.RecoilAssistConfig.VelocityExpansionDistance
VelocityExpansionMaxSpeed : float
Full recoil window expansion reached at this speed.
See UseVelocityExpansion for a more detailed overview of what "velocity expansion" means.
Signature
float Oculus.Interaction.PokeInteractable.RecoilAssistConfig.VelocityExpansionMaxSpeed
VelocityExpansionMinSpeed : float
When average velocity in interactable Z is greater than min speed, the recoil window will begin expanding.
See UseVelocityExpansion for a more detailed overview of what "velocity expansion" means.
Signature
float Oculus.Interaction.PokeInteractable.RecoilAssistConfig.VelocityExpansionMinSpeed