Language
Edit

TapToPlace Class

Definition

Tap to place is a far interaction component used to place objects on a surface.

[UnityEngine.AddComponentMenu("MRTK/Spatial Manipulation/Solvers/Tap To Place")]
public class TapToPlace : MixedReality.Toolkit.SpatialManipulation.Solver
[<UnityEngine.AddComponentMenu("MRTK/Spatial Manipulation/Solvers/Tap To Place")>]
type TapToPlace = class
    inherit Solver
Public Class TapToPlace
Inherits Solver
Inheritance
UnityEngine.MonoBehaviour
TapToPlace
Attributes
UnityEngine.AddComponentMenuAttribute

Constructors

Name Description
TapToPlace()

Fields

Name Description
SolverHandler

The handler reference for this solver that's attached to this GameObject

(Inherited from Solver)

Properties

Name Description
AutoStart

If true, the game object to place will start out selected. The object will immediately start following the TrackedTargetType (Head or Controller Ray) and then a tap is required to place the object.
This value must be modified before Start() is invoked in order to have any effect.

CurrentHit

Get or set the UnityEngine.RaycastHit of the CurrentRay.

CurrentRay

Get or set the current RayStep being using by this object.

DebugEnabled

If true and in the Unity Editor, the normal of the raycast hit will be drawn in yellow.

DefaultPlacementDistance

The default distance (in meters) an object will be placed relative to the TrackedTargetType forward in the SolverHandler. The GameObjectToPlace will be placed at the default placement distance if a surface is not hit by the raycast.

DidHitSurface

Get or set whether the CurrentRay hit a surface.

DoubleClickTimeout

Get or set the max time, in seconds, between clicks used when recognizing double clicks.

GameObjectLayer

The current game object layer before it is temporarily switched to IgnoreRaycast while placing the game object.

GoalPosition

The final position to be attained

(Inherited from Solver)
GoalRotation

The final rotation to be attained

(Inherited from Solver)
GoalScale

The final scale to be attained

(Inherited from Solver)
IsBeingPlaced

If true, the game object to place is selected.

IsColliderPresent

Get if the associated game object has a Unity Collider present.

KeepOrientationVertical

If true, the game object to place will remain upright and in line with Vector3.up

MagneticSurfaces

Array of LayerMask to execute from highest to lowest priority. First layermask to provide a raycast hit will be used by component.

MaxRaycastDistance

The max distance (in meters) to place an object if there is a raycast hit on a surface

MoveLerpTime

If 0, the position will update immediately. Otherwise, the greater this attribute the slower the position updates

(Inherited from Solver)
OnPlacingStarted

This event is triggered once when the game object to place is selected.

OnPlacingStopped

This event is triggered once when the game object to place is unselected, placed.

RotateAccordingToSurface

If false, the game object to place will not change its rotation according to the surface hit. The object will remain facing the camera while IsBeingPlaced is true. If true, the object will rotate according to the surface normal if there is a hit.

RotateLerpTime

If 0, the rotation will update immediately. Otherwise, the greater this attribute the slower the rotation updates")]

(Inherited from Solver)
ScaleLerpTime

If 0, the scale will update immediately. Otherwise, the greater this attribute the slower the scale updates

(Inherited from Solver)
Smoothing

If true, updates are smoothed to the target. Otherwise, they are snapped to the target

(Inherited from Solver)
SurfaceNormalOffset

The distance between the center of the game object to place and a surface along the surface normal, if the raycast hits a surface.

UpdateLinkedTransform

If true, the position and orientation will be calculated, but not applied, for other components to use

(Inherited from Solver)
UseDefaultSurfaceNormalOffset

If true, the default surface normal offset will be used instead of any value specified for the SurfaceNormalOffset property.
If false, the SurfaceNormalOffset is used. The default surface normal offset is the Z extents of the bounds on the attached collider, this ensures the object being placed is aligned on a surface.

WorkingPosition

Automatically uses the shared position if the solver is set to use the 'linked transform'. UpdateLinkedTransform may be set to false, and a solver will automatically update the object directly, and not inherit work done by other solvers to the shared position

(Inherited from Solver)
WorkingRotation

Rotation version of WorkingPosition

(Inherited from Solver)
WorkingScale

Scale version of WorkingPosition

(Inherited from Solver)

Methods

Name Description
AddOffset(Vector3)

Add an offset position to the target goal position.

(Inherited from Solver)
Awake()

A Unity event function that is called when an enabled script instance is being loaded.

(Inherited from Solver)
GetInputActionFromReference(InputActionReference)

Extracts the InputAction from the InputActionReference.

OnDisable()

A Unity event function that is called when the script component has been disabled.

OnEnable()

A Unity event function that is called when the script component has been enabled.

(Inherited from Solver)
PerformRaycast()

Update execute a ray cast to determine if the TapToPlace component has intersected with a MagneticSurfaces layer.

SetPosition()

Update the goal position of the game object.

SetRotation()

Update the goal rotation of the game object.

SnapGoalTo(Vector3, Quaternion, Vector3)

SnapGoalTo only sets the goal orientation. Not really useful.

(Inherited from Solver)
SnapTo(Vector3, Quaternion, Vector3)

Snaps the solver to the desired pose.

(Inherited from Solver)
SolverUpdate()

Should be implemented in derived classes, but Solver can be used to flush shared transform to real transform

SolverUpdateEntry()

Tracks lifetime of the solver, disabling it when expired, and finally runs the orientation update logic

(Inherited from Solver)
Start()

A Unity event function that is called on the frame when a script is enabled just before any of the update methods are called the first time.

StartPlacement()

Start the placement of a game object without the need of the OnPointerClicked event. The game object will begin to follow the TrackedTargetType (Head by default) at a default distance. StopPlacementViaPerformedAction() must be called after StartPlacement() to stop the game object from following the TrackedTargetType. The game object layer is changed to IgnoreRaycast temporarily and then restored to its original layer in StopPlacementViaPerformedAction().

StopPlacement()

Stop the placement of a game object.

UpdateTransformToGoal()

Updates all object orientations to the goal orientation for this solver, with smoothing accounted for (smoothing may be off)

(Inherited from Solver)
UpdateWorkingPositionToGoal()

Updates only the working position to goal with smoothing, if enabled

(Inherited from Solver)
UpdateWorkingRotationToGoal()

Updates only the working rotation to goal with smoothing, if enabled

(Inherited from Solver)
UpdateWorkingScaleToGoal()

Updates only the working scale to goal with smoothing, if enabled

(Inherited from Solver)
UpdateWorkingToGoal()

Updates the Working orientation (which may be the object, or the shared orientation) to the goal with smoothing, if enabled

(Inherited from Solver)

Applies to