Givo… I just thought of something.
Our Scene object has been loaded-up with some useful “observables”.
https://doc.babylonjs.com/api/classes/babylon.scene#onpointerobservable
OnPointerObservable is a universal “catch it all” observer… and your handler function would need to “sniff” to see what happened… turn, drag, possibly swipe/gestures, mousewheel, etc.
There’s also specific-action observables… like onPointerMove, down, up, pick, etc.
If I were you, I would leave FreeCameraMouseInput alone, for now. Keep it default.
Instead… write a bunch of custom scene-based pointer-event handlers… using those observers.
Start with little handlers… that simply console.log(“mouse moved”) and try to determine WHEN a user is dragging on-canvas. Actually, you’re a pointer-lock junky, so maybe you don’t need to listen-for drags… only pointer-moves.
We also have scene.actionManager to help us determine when user is leftbutton/rightbutton dragging or wheeling. (geez, does ANYONE do right-button dragging, these days?)
Anyway, with custom observers/handlers… set on these handy BJS SceneObject observables… you SHOULD be able to get all the power you need… WITHOUT having to deep-hack the camera’s mouseInput code.
Try that, first. While testing, or at other times, you may wish to NOT attach the camera to the canvas. Observers might quit working, then, though. Maybe scene.activeCamera = null;? I dunno… I’m just tying to think of ways to keep the camera frozen… and still listen for scene pointer observables.
Using scene observables… is a much better solution than the input hacking. I think I might have lead you astray by suggesting it. If you need help adding some basic observer handlers to the scene object, just holler. It’s simple, though.
scene.onPointerObservable.add(function(d,s){
console.log("mouse did something!", d, s);
}
d and s are a couple of automatically-arriving objects that might have useful info on them.
There’s no results when searching Scene API for ‘mouse’ or ‘wheel’… just pointer stuff. No right-button or middle-button observables, either… but we can get them from scene.actionManager, if needed.
Give it a sniff, if you please. I think these scene-observer methods are much wiser than hacking that freeCamMouseInput crap.
Some keyboard stuff, seen, too. hmm. peace-out!