mirror of
https://github.com/redstrate/Novus.git
synced 2025-05-19 06:47:44 +00:00
Make free camera movement in 3D views framerate-independent
This makes it way more tolerable to use when your framerate is super low, like in the Map Editor.
This commit is contained in:
parent
80f1e2c1dd
commit
7213b1865f
2 changed files with 7 additions and 2 deletions
|
@ -185,6 +185,9 @@ void VulkanWindow::render()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const float deltaTime = timer.nsecsElapsed() / 1000000000.0f;
|
||||||
|
timer.restart();
|
||||||
|
|
||||||
ImGui::SetCurrentContext(m_renderer->ctx);
|
ImGui::SetCurrentContext(m_renderer->ctx);
|
||||||
|
|
||||||
auto &io = ImGui::GetIO();
|
auto &io = ImGui::GetIO();
|
||||||
|
@ -221,8 +224,8 @@ void VulkanWindow::render()
|
||||||
forward = normalize(glm::angleAxis(part->yaw, glm::vec3(0, 1, 0)) * glm::angleAxis(part->pitch, glm::vec3(1, 0, 0)) * glm::vec3(0, 0, 1));
|
forward = normalize(glm::angleAxis(part->yaw, glm::vec3(0, 1, 0)) * glm::angleAxis(part->pitch, glm::vec3(1, 0, 0)) * glm::vec3(0, 0, 1));
|
||||||
right = normalize(glm::angleAxis(part->yaw, glm::vec3(0, 1, 0)) * glm::vec3(1, 0, 0));
|
right = normalize(glm::angleAxis(part->yaw, glm::vec3(0, 1, 0)) * glm::vec3(1, 0, 0));
|
||||||
|
|
||||||
part->position += right * movX * 2.0f;
|
part->position += right * movX * 50.0f * deltaTime;
|
||||||
part->position += forward * movY * 2.0f;
|
part->position += forward * movY * 50.0f * deltaTime;
|
||||||
|
|
||||||
m_renderer->camera.view = glm::mat4(1.0f);
|
m_renderer->camera.view = glm::mat4(1.0f);
|
||||||
m_renderer->camera.view = glm::translate(m_renderer->camera.view, part->position);
|
m_renderer->camera.view = glm::translate(m_renderer->camera.view, part->position);
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <QElapsedTimer>
|
||||||
#include <QWindow>
|
#include <QWindow>
|
||||||
|
|
||||||
#include "imgui.h"
|
#include "imgui.h"
|
||||||
|
@ -30,4 +31,5 @@ private:
|
||||||
QVulkanInstance *m_instance;
|
QVulkanInstance *m_instance;
|
||||||
MDLPart *part;
|
MDLPart *part;
|
||||||
bool pressed_keys[4] = {};
|
bool pressed_keys[4] = {};
|
||||||
|
QElapsedTimer timer;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue