Add a sensitivity value to improve issue #0000772

This commit is contained in:
wmayer
2012-07-06 18:47:11 +02:00
parent 20ffe1f866
commit 32d38561c8
3 changed files with 28 additions and 0 deletions

View File

@@ -54,10 +54,12 @@ struct NavigationStyleP {
SbVec3f focal1, focal2;
SbRotation endRotation;
SoTimerSensor * animsensor;
float sensitivity;
NavigationStyleP()
{
this->animationsteps = 0;
this->sensitivity = 2.0f;
}
static void viewAnimationCB(void * data, SoSensor * sensor);
};
@@ -780,6 +782,14 @@ void NavigationStyle::spin(const SbVec2f & pointerpos)
this->spinprojector->project(lastpos);
SbRotation r;
this->spinprojector->projectAndGetRotation(pointerpos, r);
float sensitivity = getSensitivity();
if (sensitivity > 1.0f) {
SbVec3f axis;
float radians;
r.getValue(axis, radians);
radians = sensitivity * radians;
r.setValue(axis, radians);
}
r.invert();
this->reorientCamera(viewer->getCamera(), r);
@@ -923,6 +933,16 @@ void NavigationStyle::stopAnimating(void)
NavigationStyle::IDLE : NavigationStyle::INTERACT);
}
void NavigationStyle::setSensitivity(float val)
{
PRIVATE(this)->sensitivity = val;
}
float NavigationStyle::getSensitivity() const
{
return PRIVATE(this)->sensitivity;
}
void NavigationStyle::setZoomInverted(SbBool on)
{
this->invertZoom = on;