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


###################
CameraOrbitOperator
###################

.. js:class:: wv.Operators.Camera.CameraOrbitOperator

   
   Index
   =====
   
   .. rubric:: Methods
   
   
   .. rst-class:: api-xref-list
   
   
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.addMapping`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.checkMapping`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.clearMapping`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.getBimOrbitEnabled`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.getCameraRotationMomentumEnabled`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.getMomentum`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.getMomentumLossPerSecond`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.getOrbitFallbackMode`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.getOrbitTarget`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.getPrimaryButton`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.isActive`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.isAnimating`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.isCurrentlyAnimating`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.isDragging`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.onDoubleClick`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.onTouchEnd`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.onTouchMove`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.onTouchStart`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.setBimOrbitEnabled`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.setCameraRotationMomentumEnabled`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.setHandled`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.setMapping`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.setMomentumLossPerSecond`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.setOrbitFallbackMode`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.setOrbitTarget`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.setPrimaryButton`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.stopAnimation`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.stopInteraction`
   * :js:meth:`~wv.Operators.Camera.CameraOrbitOperator.supportsAnimation`
   
   



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

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


.. js:method:: wv.Operators.Camera.CameraOrbitOperator.addMapping

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | addMapping(**button**\ : :js:data:`Button <wv.Button>`\ , **modifier**\ : :js:data:`KeyModifiers <wv.KeyModifiers>`\ ?): *void*
      
      Adds a button and key modifier mapping for the operator. If no mapping is provided, all combinations are considered valid. All mappings require a mouse button, but a key modifier is optional.
      
      **Parameters**
      
      
         **button**\ : :js:data:`Button <wv.Button>`
      
         **modifier**\ : :js:data:`KeyModifiers <wv.KeyModifiers>` = KeyModifiers.None
      
      
      **Returns**\ : *void*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.checkMapping

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | checkMapping(**event**\ : :js:class:`MouseInputEvent <wv.Event.MouseInputEvent>`\ ): *boolean*
      
      Checks if the given mouse event matches any of the button and key modifier mappings for the operator. If no mappings are defined, it returns true.
      
      **Parameters**
      
      
         **event**\ : :js:class:`MouseInputEvent <wv.Event.MouseInputEvent>`
      
      
            The mouse event to check against the operator's mappings.
      
      
      
      **Returns**\ : *boolean*
      
      
         True if the event matches any mapping or if no mappings are defined, false otherwise.
      
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.clearMapping

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | clearMapping(): *void*
      
      Clears any button and key modifier mappings for the operator.
      
      **Returns**\ : *void*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.getBimOrbitEnabled

      .. rst-class:: sig-pretty-signature
      
         | getBimOrbitEnabled(): *boolean*
      
      Returns true if BIM orbit is enabled.
      
      **Returns**\ : *boolean*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.getCameraRotationMomentumEnabled

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | getCameraRotationMomentumEnabled(): *boolean*
      
      **Returns**\ : *boolean*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.getMomentum

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | getMomentum(): *number*
      
      **Returns**\ : *number*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.getMomentumLossPerSecond

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | getMomentumLossPerSecond(): *number*
      
      **Returns**\ : *number*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.getOrbitFallbackMode

      .. rst-class:: sig-pretty-signature
      
         | getOrbitFallbackMode(): :js:data:`OrbitFallbackMode <wv.OrbitFallbackMode>`
      
      Gets the orbit fallback mode.
      
      **Returns**\ : :js:data:`OrbitFallbackMode <wv.OrbitFallbackMode>`
      
      
         orbit fallback mode
      
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.getOrbitTarget

      .. rst-class:: sig-pretty-signature
      
         | getOrbitTarget(): :js:class:`Point3 <wv.Point3>`
      
      Gets the orbit target point.
      
      **Returns**\ : :js:class:`Point3 <wv.Point3>`
      
      
         orbit target
      
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.getPrimaryButton

      .. rst-class:: sig-pretty-signature
      
         | getPrimaryButton(): :js:data:`Button <wv.Button>`
      
      **Returns**\ : :js:data:`Button <wv.Button>`
      
      
         the primary orbit button
      
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.isActive

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | isActive(): *boolean*
      
      Checks if the operator is currently active, which is determined by whether the button and key modifier mapping is active or a touch event is active, and that a double click has not occurred and the context menu is not open.
      
      **Returns**\ : *boolean*
      
      
         True if the operator is active, false otherwise.
      
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.isAnimating

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | isAnimating(): *boolean*
      
      **Returns**\ : *boolean*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.isCurrentlyAnimating

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | isCurrentlyAnimating(): *boolean*
      
      **Returns**\ : *boolean*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.isDragging

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | isDragging(): *boolean*
      
      Checks if the operator is currently dragging.
      
      **Returns**\ : *boolean*
      
      
         True if the operator is dragging, false otherwise.
      
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.onDoubleClick

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | onDoubleClick(**_event**\ : :js:class:`MouseInputEvent <wv.Event.MouseInputEvent>`\ ): *void*
      
      NO-OP method for handling double click events. By default, it does nothing, but child classes can override this method to provide specific behavior for double click events.
      
      **Parameters**
      
      
         **_event**\ : :js:class:`MouseInputEvent <wv.Event.MouseInputEvent>`
      
      
            The double click event to handle.
      
      
      
      **Returns**\ : *void*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.onTouchEnd

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | onTouchEnd(**event**\ : :js:class:`TouchInputEvent <wv.Event.TouchInputEvent>`\ ): *void*
      
      Base method for handling touch end events. If the touch event corresponds to the primary touch point, it emulates a mouse up event using the touch position and resets the primary touch ID. It also sets the event as handled based on the operator's setHandled method.
      
      **Parameters**
      
      
         **event**\ : :js:class:`TouchInputEvent <wv.Event.TouchInputEvent>`
      
      
            The touch end event to handle.
      
      
      
      **Returns**\ : *void*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.onTouchMove

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | onTouchMove(**event**\ : :js:class:`TouchInputEvent <wv.Event.TouchInputEvent>`\ ): *Promise*
      
      Base method for handling touch move events. If the touch event corresponds to the primary touch point, it emulates a mouse move event using the touch position. It awaits the onMouseMove method to allow for asynchronous behavior in child classes.
      
      **Parameters**
      
      
         **event**\ : :js:class:`TouchInputEvent <wv.Event.TouchInputEvent>`
      
      
            The touch move event to handle.
      
      
      
      **Returns**\ : *Promise*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.onTouchStart

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | onTouchStart(**event**\ : :js:class:`TouchInputEvent <wv.Event.TouchInputEvent>`\ ): *void*
      
      Base method for handling touch start events. It tracks the primary touch point and emulates a mouse down event using the touch position. If there is already an active touch, it ignores additional touch start events.
      
      **Parameters**
      
      
         **event**\ : :js:class:`TouchInputEvent <wv.Event.TouchInputEvent>`
      
      
            The touch start event to handle.
      
      
      
      **Returns**\ : *void*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.setBimOrbitEnabled

      .. rst-class:: sig-pretty-signature
      
         | setBimOrbitEnabled(**bimOrbitEnabled**\ : *boolean*\ ): *void*
      
      BIM orbit is intended to make orbiting building models easier. It slows the rotation speed, clamps vertical rotation to 180 degrees, and restricts horizontal rotation to rotate around the vertical axis.
      
      **Parameters**
      
      
         **bimOrbitEnabled**\ : *boolean*
      
      
      **Returns**\ : *void*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.setCameraRotationMomentumEnabled

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | setCameraRotationMomentumEnabled(**val**\ : *boolean*\ ): *void*
      
      **Parameters**
      
      
         **val**\ : *boolean*
      
      
      **Returns**\ : *void*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.setHandled

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | setHandled(): *boolean*
      
      Base method for setting the handled state of events. By default, it returns false, but child classes can override this method to provide specific behavior for determining whether events should be marked as handled.
      
      **Returns**\ : *boolean*
      
      
         True if the event should be marked as handled, false otherwise.
      
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.setMapping

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | setMapping(**button**\ : :js:data:`Button <wv.Button>`\ , **modifier**\ : :js:data:`KeyModifiers <wv.KeyModifiers>`\ ?): *void*
      
      Sets the button and key modifier mapping for the operator.
      
      **Parameters**
      
      
         **button**\ : :js:data:`Button <wv.Button>`
      
         **modifier**\ : :js:data:`KeyModifiers <wv.KeyModifiers>` = KeyModifiers.None
      
      
      **Returns**\ : *void*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.setMomentumLossPerSecond

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | setMomentumLossPerSecond(**amountLost**\ : *number*\ ): *void*
      
      Sets proportion of momentum lost per second if camera rotation momentum is enabled. At 0 no momentum is lost and the camera will orbit indefinitely. Above 1 the camera will stop orbiting within a second of release. Only values greater than or equal to 0 are accepted.
      
      **Parameters**
      
      
         **amountLost**\ : *number*
      
      
            Proportion of momentum lost per second
      
      
      
      **Returns**\ : *void*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.setOrbitFallbackMode

      .. rst-class:: sig-pretty-signature
      
         | setOrbitFallbackMode(**fallbackMode**\ : :js:data:`OrbitFallbackMode <wv.OrbitFallbackMode>`\ ): *void*
      
      Sets the fallback mode. This is used to specify whether to orbit around a set target, the model center, or camera target.
      
      **Parameters**
      
      
         **fallbackMode**\ : :js:data:`OrbitFallbackMode <wv.OrbitFallbackMode>`
      
      
      **Returns**\ : *void*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.setOrbitTarget

      .. rst-class:: sig-pretty-signature
      
         | setOrbitTarget(**orbitTarget**\ : :js:class:`Point3 <wv.Point3>`\ ): *void*
      
      Sets the orbit target for the orbit fallback mode OrbitTarget.
      
      **Parameters**
      
      
         **orbitTarget**\ : :js:class:`Point3 <wv.Point3>`
      
      
      **Returns**\ : *void*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.setPrimaryButton

      .. rst-class:: sig-pretty-signature
      
         | setPrimaryButton(**button**\ : :js:data:`Button <wv.Button>`\ ): *void*
      
      Sets the primary mouse button. When this button is pressed, we will orbit around the selected point on the model. If there is no selected point, the orbit fallback mode will be used for orbit.
      
      **Parameters**
      
      
         **button**\ : :js:data:`Button <wv.Button>`
      
      
      **Returns**\ : *void*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.stopAnimation

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



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.stopInteraction

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | stopInteraction(): *void*
      
      Stops the current interaction by triggering the "endInteraction" event on the viewer, and resets the dragging state, drag count, and button modifier active state.
      
      **Returns**\ : *void*
      



.. js:method:: wv.Operators.Camera.CameraOrbitOperator.supportsAnimation

      .. rst-class:: clio-flags
      
         :clio-inherited:`inherited`
      
      .. rst-class:: sig-pretty-signature
      
         | supportsAnimation(): *boolean*
      
      **Returns**\ : *boolean*
      




