From Martin Beckett, added get/setScrollWheelZoomDelta() support for controlling the mouse scroll wheel zoom delta.

This commit is contained in:
Robert Osfield
2009-03-11 10:50:03 +00:00
parent c3810e130b
commit 06ef559d91
2 changed files with 11 additions and 2 deletions

View File

@@ -78,6 +78,13 @@ class OSGGA_EXPORT TrackballManipulator : public MatrixManipulator
/** get the minimum distance (as ratio) the eye point can be zoomed in */
double getMinimumZoomScale() const { return _minimumZoomScale; }
/** set the mouse scroll wheel zoom delta.
* Range -1.0 to +1.0, -ve value inverts wheel direction and zero switches off scroll wheel. */
void setScroolWheelZoomDelta(double zoomDelta) { _zoomDelta = zoomDelta; }
/** get the mouse scroll wheel zoom delta. */
double getScroolWheelZoomDelta() const { return _zoomDelta; }
/** Set the center of the trackball. */
void setCenter(const osg::Vec3d& center) { _center = center; }
@@ -139,6 +146,7 @@ class OSGGA_EXPORT TrackballManipulator : public MatrixManipulator
osg::Quat _rotation;
double _distance;
float _trackballSize;
float _zoomDelta;
};

View File

@@ -14,6 +14,7 @@ TrackballManipulator::TrackballManipulator()
_distance = 1.0f;
_trackballSize = 0.8f;
_zoomDelta = 0.1f;
}
@@ -245,7 +246,7 @@ void TrackballManipulator::computePosition(const osg::Vec3& eye,const osg::Vec3&
bool TrackballManipulator::calcMovement()
{
// mosue scroll is only a single event
// mouse scroll is only a single event
if (_ga_t0.get()==NULL) return false;
float dx=0.0f;
@@ -254,7 +255,7 @@ bool TrackballManipulator::calcMovement()
if (_ga_t0->getEventType()==GUIEventAdapter::SCROLL)
{
dy = _ga_t0->getScrollingMotion() == osgGA::GUIEventAdapter::SCROLL_DOWN ? -0.1 : 0.1;
dy = _ga_t0->getScrollingMotion() == osgGA::GUIEventAdapter::SCROLL_UP ? _zoomDelta : -_zoomDelta;
buttonMask=GUIEventAdapter::SCROLL;
}
else