That's awesome Jon. Thanks - I've updated my fork as well and added the other two possible Suppress options (seemed odd to leave them out). I've been wanting to add something that also restricted the degree. Take the YawRotationMode for a globe that someone is working with. It would be nice to allow some pitch to better view the poles, but not enough to flip it or anything. But I know it does odd things when more than one axis is enabled. Anyway...
Here are the added methods that are in
my fork for those that might need just a little more and willing to use something more betaish (I'm not nearly as skilled as Jon). Hope to get them included in the official build one day.
camera.setSuppressYawRotationMode(); // Permit pitch/roll only.
camera.setSuppressPitchRotationMode(); // Permit roll/yaw only.
// change sensitivity of built-in mouse controls
camera.setZoomScale(double scale); // 1.0 by default
camera.setRotationScale(double scale); // 1.0 by default
camera.setPanScale(double scale); // 1.0 by default
double getZoomScale();
double getRotationScale();
double getPanScale();
camera.setPanOnScreenEdge(boolean panOnScreenEdge); //pans when mouse touches screen edge - default false
//Common reverse settings for tablets and OSX Lion
camera.setReversePan(boolean reverse); //reverses pan direction - default false
camera.setReverseZoom(boolean reverse); //reverses zoom direction - default false
camera.setReverseRotate(boolean reverse); //reverses rotate direction - default false
camera.setSpeedLock(boolean lock); //increases camera speed if framerate drops
camera.setSpeedRate(double frameRate); //sets the target FrameRate - default 60
camera.setDamping(double rotate, double zoom, double pan);
//Positions the camera to look through a point to the lookAt
camera.lookThrough(double x, double y, double z);
camera.lookThrough(double x, double y, double z, long animationTimeInMillis);
camera.lookThrough(double x, double y, double z, double distance);
camera.lookThrough(double x, double y, double z, double distance, long animationTimeInMillis);
camera.getMinimumDistance();
camera.getMaximumDistance();
camera.setMaximumPanDistance(double maximumDistance); // clamp panning
camera.getMaximumPanDistance();
camera.isMoving(); // returns true or false
camera.setRotations(double pitch, double yaw, double roll, long animationTimeInMillis);
Fixes for Andriod, but I haven't added any gestures yet, so you have to create
your own handler.