yomotsu / camera-controls

A camera control for three.js, similar to THREE.OrbitControls yet supports smooth transitions and more features.

Home Page:https://yomotsu.github.io/camera-controls/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

How to make the right click behave as if no orbit controls exist?

yoosif0 opened this issue · comments

Question in title

Sorry, I don't understand your situation.
I think you don't need any care of it if you don't use it...

@yomotsu
The issue is that typescript enforces me to add the "right" prop to the "mouseButtons" object. Even when I set the right prop to "CameraControls.ACTION.NONE", I am still not able to use right click appropriately

     mouseButtons={{
        left: CameraControls.ACTION.TRUCK,
        right: CameraControls.ACTION.NONE,
        middle: CameraControls.ACTION.ZOOM,
        wheel: CameraControls.ACTION.ZOOM,
      }}

how about calling cameraControls.dispose() to detach all events of cameraControls instance?

If I called "cameraControls.dispose()", would I need to manually add an event listener to "left", "middle", and "wheel"?

I checked the documentation and I still believe that "CameraControls.ACTION.NONE" for the right click button should allow default action

Let me get this straight.
What you mean is: you would like to enable the context menu if you set mouseButtons.right = CameraControls.ACTION.NONE?

const onContextMenu = ( event: Event ): void => {
if ( ! this._enabled ) return;
event.preventDefault();
};

  • If you want to remove all event listeners which attached by cameraControls, use disconnect().
  • If you want to destroy cameraControls entirely, use dispose().
  • If you want to disable event listeners temporarily, set cameraControls.enabled = false.

I tested the below, but it cause some problems.

 const onContextMenu = ( event: Event ): void => { 
  
 	if ( ! this._enabled || this.mouseButtons.right === CameraControls.ACTION.NONE ) return; 
  
 	event.preventDefault(); 
  
 };

contextmenu event is fired right after mouse down event, and contextmenu will break mouse dragging.
thus, we can't change the above code.

What you mean is: you would like to enable the context menu if you set mouseButtons.right = CameraControls.ACTION.NONE?

Yes

I've made a PR for it #362

@yomotsu thank you so much

available with v2.2.1!
let me close this issue as complicated.