import { Observable } from 'rxjs'; export declare class ObjectControls { private isUserInteracting; private restoringAnimationOngoing; private restoringOriginPosTimeout; private startDraggingPosition; private rendererDom; private touchArea; private obj; private userInteracted; private userInteractedSubject; rotationSpeed: number; verticalRotation: boolean; horizontalRotation: boolean; autoRotationY: boolean; autoRotationX: boolean; autoRotationZ: boolean; restoreOriginPosition: boolean; autoRotationSpeed: number; userInteracted$: Observable; controlsEnabled: boolean; constructor(rendererDom: HTMLElement, object: THREE.Mesh | THREE.Group, touchArea?: HTMLElement); /** * Method, which needs to be called, in case autorotation is used */ update(): void; /** * Removes the event listners */ removeEventlisteners(): void; resetUserInteractionFlag(): void; /** * Adds the event listeners */ private addEventlisteners; /** * Reset the mouse position to x=0 and y=0 */ private resetMousePosition; /****************** MOUSE interaction functions - desktop *****/ /** * Prepares everything, when the mouse is clicked * @param e mouse event */ private mouseDown; /** * Calculates the x and y rotation of the object depending on the mouse movement * @param e MouseEvent */ private mouseMove; private mouseUp; /****************** TOUCH interaction functions - mobile *****/ private onTouchStart; private onTouchMove; private onTouchEnd; /** * Rotates the object to the position 0,0,0 after a some timeout */ private restoreOriginalPosition; }