Commit 43e115d6 authored by Emil Axelsson's avatar Emil Axelsson Committed by Alexander Bock
Browse files

Add shortcut to change focus interpolation time (#707)

Closes #707 
parent 04846e3a
Showing with 33 additions and 0 deletions
+33 -0
......@@ -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();
......
......@@ -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");
......
......@@ -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;
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment