.. role:: clio-inherited
   :class: clio-flag clio-flag-inherited

.. role:: clio-optional
   :class: clio-flag clio-flag-optional


##################
NavigationOperator
##################

.. js:class:: cee.NavigationOperator

   The :js:class:`Operator <cee.Operator>` class is the base class for all operators. A name is required for all operators, and the name is used to identify the operator in the :js:class:`~cee.OperatorStack`\ .
   
   Operators contain optional methods that correspond to the different events that may occur in the view. When an operator is set on a :js:class:`View <cee.View>`\ , the operator can interact with its ownerView, but only that view. The :js:class:`~cee.Viewer` sets the events listeners internally, and then fires the corresponding Operator event handler method when the event is recieved.
   
   
   Index
   =====
   
   .. rubric:: Constructors
   
   
   .. rst-class:: api-xref-list
   
   
   * :js:func:`~cee.NavigationOperator.constructor`
   
   .. rubric:: Accessors
   
   
   .. rst-class:: api-xref-list
   
   
   * :js:func:`~cee.NavigationOperator.config`
   * :js:func:`~cee.NavigationOperator.invertWalkZoom`
   * :js:func:`~cee.NavigationOperator.minWalkTargetDistance`
   * :js:func:`~cee.NavigationOperator.mouseWheelZoomAndWalkBehavior`
   * :js:func:`~cee.NavigationOperator.name`
   * :js:func:`~cee.NavigationOperator.ownerView`
   * :js:func:`~cee.NavigationOperator.rotationAxis`
   * :js:func:`~cee.NavigationOperator.rotationPoint`
   * :js:func:`~cee.NavigationOperator.rotationSensitivity`
   
   .. rubric:: Methods
   
   
   .. rst-class:: api-xref-list
   
   
   * :js:meth:`~cee.NavigationOperator.onAddedToView`
   * :js:meth:`~cee.NavigationOperator.onClick`
   * :js:meth:`~cee.NavigationOperator.onDblClick`
   * :js:meth:`~cee.NavigationOperator.onKeyDown`
   * :js:meth:`~cee.NavigationOperator.onKeyUp`
   * :js:meth:`~cee.NavigationOperator.onMouseDown`
   * :js:meth:`~cee.NavigationOperator.onMouseMove`
   * :js:meth:`~cee.NavigationOperator.onMouseUp`
   * :js:meth:`~cee.NavigationOperator.onPointerDown`
   * :js:meth:`~cee.NavigationOperator.onPointerMove`
   * :js:meth:`~cee.NavigationOperator.onPointerUp`
   * :js:meth:`~cee.NavigationOperator.onRemovedFromView`
   * :js:meth:`~cee.NavigationOperator.onTouchEnd`
   * :js:meth:`~cee.NavigationOperator.onTouchMove`
   * :js:meth:`~cee.NavigationOperator.onTouchStart`
   * :js:meth:`~cee.NavigationOperator.onWheel`
   * :js:meth:`~cee.NavigationOperator.resetRotationPoint`
   
   



.. rst-class:: kind-group kind-constructors

.. rubric:: Constructors
   :class: kind-group-title


.. js:method:: cee.NavigationOperator.constructor

      .. rst-class:: sig-pretty-signature
      
         | NavigationOperator(**name**\ : *string*\ ?): :js:class:`NavigationOperator <cee.NavigationOperator>`
      
      **Parameters**
      
      
         **name**\ : *string* = StandardOperator.NAVIGATION
      
      
      **Returns**\ : :js:class:`NavigationOperator <cee.NavigationOperator>`
      



.. rst-class:: kind-group kind-accessors

.. rubric:: Accessors
   :class: kind-group-title


.. js:method:: cee.NavigationOperator.config

      .. rst-class:: sig-pretty-signature
      
         | *get* config(): :js:class:`OperatorConfig <cee.OperatorConfig>`\ <:js:data:`NavigationType <cee.NavigationType>`\ >
      
      The navigation configuration. Specify what should happen on mouse and touch input
      
      **Returns**\ : :js:class:`OperatorConfig <cee.OperatorConfig>`\ <:js:data:`NavigationType <cee.NavigationType>`\ >
      
      .. rst-class:: sig-pretty-signature
      
         | *set* config(**config**\ : :js:class:`OperatorConfig <cee.OperatorConfig>`\ <:js:data:`NavigationType <cee.NavigationType>`\ >): *void*
      
      **Parameters**
      
      
         **config**\ : :js:class:`OperatorConfig <cee.OperatorConfig>`\ <:js:data:`NavigationType <cee.NavigationType>`\ >
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.NavigationOperator.invertWalkZoom

      .. rst-class:: sig-pretty-signature
      
         | *get* invertWalkZoom(): *boolean*
      
      Invert the zoom direction of the mouse wheel
      
      **Returns**\ : *boolean*
      
      .. rst-class:: sig-pretty-signature
      
         | *set* invertWalkZoom(**invert**\ : *boolean*\ ): *void*
      
      **Parameters**
      
      
         **invert**\ : *boolean*
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.NavigationOperator.minWalkTargetDistance

      .. rst-class:: sig-pretty-signature
      
         | *get* minWalkTargetDistance(): *number*
      
      The minimum walk target minTargetDistance
      
      For walk navigation, this is used to control how much the navigation should slow down when getting close to the rotation point. The walk speed is dynamic so you can interact with large models. Depending on your model size, you might want to adjust this parameter.
      
      The default is undefined (automatic), which will be interpreted as 1/10 of the current view bounding box.
      
      **Returns**\ : *number*
      
      .. rst-class:: sig-pretty-signature
      
         | *set* minWalkTargetDistance(**minTargetDistance**\ : *number*\ ): *void*
      
      **Parameters**
      
      
         **minTargetDistance**\ : *number*
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.NavigationOperator.mouseWheelZoomAndWalkBehavior

      .. rst-class:: sig-pretty-signature
      
         | *get* mouseWheelZoomAndWalkBehavior(): :js:data:`MouseWheelZoomAndWalkBehavior <cee.MouseWheelZoomAndWalkBehavior>`
      
      Determine mouse wheel zoom and walk behavior
      
      This setting will only have effect if mouse wheel is configured to perform zoom or walk navigation.
      
      **Returns**\ : :js:data:`MouseWheelZoomAndWalkBehavior <cee.MouseWheelZoomAndWalkBehavior>`
      
      .. rst-class:: sig-pretty-signature
      
         | *set* mouseWheelZoomAndWalkBehavior(**behavior**\ : :js:data:`MouseWheelZoomAndWalkBehavior <cee.MouseWheelZoomAndWalkBehavior>`\ ): *void*
      
      **Parameters**
      
      
         **behavior**\ : :js:data:`MouseWheelZoomAndWalkBehavior <cee.MouseWheelZoomAndWalkBehavior>`
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.NavigationOperator.name

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | *get* name(): *string*
      
      The name of the operator. Built-in operator names can be referenced by the :js:data:`StandardOperator <cee.StandardOperator>` enum.
      
      **Returns**\ : *string*
      



.. js:method:: cee.NavigationOperator.ownerView

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | *get* ownerView(): :js:class:`View <cee.View>`
      
      Returns the :js:class:`View <cee.View>` that this operator is set on. If the operator is not on a view's :js:class:`~cee.OperatorStack`\ , null is returned.
      
      **Returns**\ : :js:class:`View <cee.View>`
      



.. js:method:: cee.NavigationOperator.rotationAxis

      .. rst-class:: sig-pretty-signature
      
         | *get* rotationAxis(): :js:class:`Vec3Like <cee.Vec3Like>`
      
      An optional user provided axis around which the model should be rotated. Set to null to not constrain rotation to an axis (default).
      
      **Returns**\ : :js:class:`Vec3Like <cee.Vec3Like>`
      
      .. rst-class:: sig-pretty-signature
      
         | *set* rotationAxis(**axis**\ : :js:class:`Vec3Like <cee.Vec3Like>`\ ): *void*
      
      **Parameters**
      
      
         **axis**\ : :js:class:`Vec3Like <cee.Vec3Like>`
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.NavigationOperator.rotationPoint

      .. rst-class:: sig-pretty-signature
      
         | *get* rotationPoint(): :js:class:`Vec3Like <cee.Vec3Like>`
      
      The current rotation point
      
      **Returns**\ : :js:class:`Vec3Like <cee.Vec3Like>`
      
      .. rst-class:: sig-pretty-signature
      
         | *set* rotationPoint(**rotationPoint**\ : :js:class:`Vec3Like <cee.Vec3Like>`\ ): *void*
      
      **Parameters**
      
      
         **rotationPoint**\ : :js:class:`Vec3Like <cee.Vec3Like>`
      
      
      **Returns**\ : *void*
      



.. js:method:: cee.NavigationOperator.rotationSensitivity

      .. rst-class:: sig-pretty-signature
      
         | *get* rotationSensitivity(): *number*
      
      Rotation sensitivity
      
      Sensitivity factor controlling how sensitive the mouse is when doing rotations.
      
      Default 1.0
      
      **Returns**\ : *number*
      
      .. rst-class:: sig-pretty-signature
      
         | *set* rotationSensitivity(**sensitivity**\ : *number*\ ): *void*
      
      **Parameters**
      
      
         **sensitivity**\ : *number*
      
      
      **Returns**\ : *void*
      



.. rst-class:: kind-group kind-methods

.. rubric:: Methods
   :class: kind-group-title


.. js:method:: cee.NavigationOperator.onAddedToView

      .. rst-class:: sig-pretty-signature
      
         | onAddedToView(): *void*
      
      **Returns**\ : *void*
      



.. js:method:: cee.NavigationOperator.onClick

      .. rst-class:: clio-flags
      
         :clio-optional:`optional`
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | onClick(**event**\ : *MouseEvent*\ ): :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      
      **Parameters**
      
      
         **event**\ : *MouseEvent*
      
      
      **Returns**\ : :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      



.. js:method:: cee.NavigationOperator.onDblClick

      .. rst-class:: clio-flags
      
         :clio-optional:`optional`
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | onDblClick(**event**\ : *MouseEvent*\ ): :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      
      **Parameters**
      
      
         **event**\ : *MouseEvent*
      
      
      **Returns**\ : :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      



.. js:method:: cee.NavigationOperator.onKeyDown

      .. rst-class:: clio-flags
      
         :clio-optional:`optional`
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | onKeyDown(**event**\ : *KeyboardEvent*\ ): :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      
      **Parameters**
      
      
         **event**\ : *KeyboardEvent*
      
      
      **Returns**\ : :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      



.. js:method:: cee.NavigationOperator.onKeyUp

      .. rst-class:: clio-flags
      
         :clio-optional:`optional`
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | onKeyUp(**event**\ : *KeyboardEvent*\ ): :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      
      **Parameters**
      
      
         **event**\ : *KeyboardEvent*
      
      
      **Returns**\ : :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      



.. js:method:: cee.NavigationOperator.onMouseDown

      .. rst-class:: sig-pretty-signature
      
         | onMouseDown(**event**\ : *MouseEvent*\ ): :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      
      **Parameters**
      
      
         **event**\ : *MouseEvent*
      
      
      **Returns**\ : :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      



.. js:method:: cee.NavigationOperator.onMouseMove

      .. rst-class:: sig-pretty-signature
      
         | onMouseMove(**event**\ : *MouseEvent*\ ): :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      
      **Parameters**
      
      
         **event**\ : *MouseEvent*
      
      
      **Returns**\ : :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      



.. js:method:: cee.NavigationOperator.onMouseUp

      .. rst-class:: sig-pretty-signature
      
         | onMouseUp(**event**\ : *MouseEvent*\ ): :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      
      **Parameters**
      
      
         **event**\ : *MouseEvent*
      
      
      **Returns**\ : :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      



.. js:method:: cee.NavigationOperator.onPointerDown

      .. rst-class:: clio-flags
      
         :clio-optional:`optional`
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | onPointerDown(**event**\ : *PointerEvent*\ ): :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      
      **Parameters**
      
      
         **event**\ : *PointerEvent*
      
      
      **Returns**\ : :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      



.. js:method:: cee.NavigationOperator.onPointerMove

      .. rst-class:: clio-flags
      
         :clio-optional:`optional`
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | onPointerMove(**event**\ : *PointerEvent*\ ): :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      
      **Parameters**
      
      
         **event**\ : *PointerEvent*
      
      
      **Returns**\ : :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      



.. js:method:: cee.NavigationOperator.onPointerUp

      .. rst-class:: clio-flags
      
         :clio-optional:`optional`
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | onPointerUp(**event**\ : *PointerEvent*\ ): :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      
      **Parameters**
      
      
         **event**\ : *PointerEvent*
      
      
      **Returns**\ : :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      



.. js:method:: cee.NavigationOperator.onRemovedFromView

      .. rst-class:: clio-flags
      
         :clio-optional:`optional`
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | onRemovedFromView(): *void*
      
      **Returns**\ : *void*
      



.. js:method:: cee.NavigationOperator.onTouchEnd

      .. rst-class:: sig-pretty-signature
      
         | onTouchEnd(**event**\ : *TouchEvent*\ ): :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      
      **Parameters**
      
      
         **event**\ : *TouchEvent*
      
      
      **Returns**\ : :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      



.. js:method:: cee.NavigationOperator.onTouchMove

      .. rst-class:: sig-pretty-signature
      
         | onTouchMove(**event**\ : *TouchEvent*\ ): :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      
      **Parameters**
      
      
         **event**\ : *TouchEvent*
      
      
      **Returns**\ : :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      



.. js:method:: cee.NavigationOperator.onTouchStart

      .. rst-class:: sig-pretty-signature
      
         | onTouchStart(**event**\ : *TouchEvent*\ ): :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      
      **Parameters**
      
      
         **event**\ : *TouchEvent*
      
      
      **Returns**\ : :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      



.. js:method:: cee.NavigationOperator.onWheel

      .. rst-class:: sig-pretty-signature
      
         | onWheel(**event**\ : *WheelEvent*\ ): :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      
      **Parameters**
      
      
         **event**\ : *WheelEvent*
      
      
      **Returns**\ : :js:data:`OperatorEventStatus <cee.OperatorEventStatus>`
      



.. js:method:: cee.NavigationOperator.resetRotationPoint

      .. rst-class:: sig-pretty-signature
      
         | resetRotationPoint(): *boolean*
      
      Reset the rotation point to the bounding box center of all models in the owner view. If the operator does not have a valid view bounding box, the rotation point will not be modified and the function will return false.
      
      **Returns**\ : *boolean*
      




