Add a sensitivity value to improve issue #0000772
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user