Add shortcut to change focus interpolation time (#707)

Closes #707
This commit is contained in:
Emil Axelsson
2018-09-03 07:50:47 +02:00
committed by Alexander Bock
parent 04846e3adf
commit 43e115d651
5 changed files with 33 additions and 0 deletions
@@ -58,6 +58,7 @@ public:
void setFocusNode(SceneGraphNode* node);
void setCamera(Camera* camera);
void resetCameraDirection();
void setInterpolationTime(float durationInSeconds);
void setCameraStateFromDictionary(const ghoul::Dictionary& cameraDict);
@@ -72,6 +73,7 @@ public:
const InputState& inputState() const;
const OrbitalNavigator& orbitalNavigator() const;
KeyframeNavigator& keyframeNavigator() const;
float interpolationTime() const;
// Callback functions
void keyboardCallback(Key key, KeyModifier modifier, KeyAction action);
@@ -55,6 +55,8 @@ public:
void setFocusNode(SceneGraphNode* focusNode);
void startInterpolateCameraDirection(const Camera& camera);
float rotateToFocusInterpolationTime() const;
void setRotateToFocusInterpolationTime(float durationInSeconds);
JoystickCameraStates& joystickStates();
@@ -153,6 +153,19 @@ void GuiSpaceTimeComponent::render() {
);
}
float interpolationTime = global::navigationHandler.interpolationTime();
const bool interpolationTimeChanged = ImGui::SliderFloat(
"Interpolation Time",
&interpolationTime,
0.f,
10.f,
"%.1f seconds"
);
if (interpolationTimeChanged) {
global::navigationHandler.setInterpolationTime(interpolationTime);
}
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 20.f);
ImGui::Separator();
+8
View File
@@ -135,6 +135,14 @@ KeyframeNavigator& NavigationHandler::keyframeNavigator() const {
return *_keyframeNavigator;
}
float NavigationHandler::interpolationTime() const {
return _orbitalNavigator->rotateToFocusInterpolationTime();
}
void NavigationHandler::setInterpolationTime(float durationInSeconds) {
_orbitalNavigator->setRotateToFocusInterpolationTime(durationInSeconds);
}
void NavigationHandler::updateCamera(double deltaTime) {
ghoul_assert(_inputState != nullptr, "InputState must not be nullptr");
ghoul_assert(_camera != nullptr, "Camera must not be nullptr");
+8
View File
@@ -404,6 +404,14 @@ void OrbitalNavigator::startInterpolateCameraDirection(const Camera& camera) {
_cameraToSurfaceDistanceInterpolator.start();
}
float OrbitalNavigator::rotateToFocusInterpolationTime() const {
return _rotateToFocusInterpolationTime;
}
void OrbitalNavigator::setRotateToFocusInterpolationTime(float durationInSeconds) {
_rotateToFocusInterpolationTime = durationInSeconds;
}
bool OrbitalNavigator::followingNodeRotation() const {
return _followRotationInterpolator.value() >= 1.0;
}