approximative cam movement
This commit is contained in:
@@ -92,12 +92,18 @@ void Renderer::SetZoom(float zoom) {
|
||||
SetCamLook(m_Camera.CamLook);
|
||||
}
|
||||
|
||||
void Renderer::SetCamMovement(const Vec2f& mov) {
|
||||
void Renderer::SetCamAngularMovement(const Vec2f& mov) {
|
||||
m_Camera.m_Pitch = std::clamp(m_Camera.m_Pitch - mov.y / m_MouseSensitivity, -PI / 2.0f + 0.0000001f, -PI / 12.0f );
|
||||
m_Camera.m_Yaw += mov.x / m_MouseSensitivity;
|
||||
SetCamLook(m_Camera.CamLook);
|
||||
}
|
||||
|
||||
void Renderer::SetCamMovement(const Vec2f& mov) {
|
||||
Vec2f cursor = {static_cast<float>(m_WindowSize.x) / 2.0f - mov.x, static_cast<float>(m_WindowSize.y) / 2.0f - mov.y};
|
||||
Vec2f worldMovement = GetCursorWorldPos(cursor, m_WindowSize.x, m_WindowSize.y);
|
||||
SetCamLook(worldMovement);
|
||||
}
|
||||
|
||||
void Renderer::SetCamPos(const Vec3f& newPos) {
|
||||
|
||||
Vec3f front = {
|
||||
|
||||
@@ -48,15 +48,25 @@ void WorldRenderer::UpdateCursorPos() {
|
||||
void WorldRenderer::Update() {
|
||||
if (m_WorldVao == nullptr)
|
||||
return;
|
||||
|
||||
ImGuiIO& io = ImGui::GetIO();
|
||||
|
||||
if (io.MouseDown[0] && !ImGui::IsAnyItemActive() && !ImGui::IsAnyItemHovered()) {
|
||||
ImVec2 mouseDelta = ImGui::GetIO().MouseDelta;
|
||||
MoveCam(mouseDelta.x, mouseDelta.y);
|
||||
m_Renderer->SetCamMovement({ mouseDelta.x, mouseDelta.y });
|
||||
}
|
||||
|
||||
if (io.MouseDown[1] && !ImGui::IsAnyItemActive() && !ImGui::IsAnyItemHovered()) {
|
||||
ImVec2 mouseDelta = ImGui::GetIO().MouseDelta;
|
||||
m_Renderer->SetCamAngularMovement({ mouseDelta.x, mouseDelta.y });
|
||||
}
|
||||
|
||||
if (io.MouseWheel != 0) {
|
||||
ChangeZoom(io.MouseWheel);
|
||||
}
|
||||
|
||||
UpdateCursorPos();
|
||||
|
||||
if (ImGui::IsMouseClicked(0)) {
|
||||
if (!m_TowerUpgradePopup->IsPopupOpened()) {
|
||||
m_HoldCursorPos = { io.MousePos.x, io.MousePos.y };
|
||||
@@ -136,7 +146,7 @@ void WorldRenderer::RenderTooltips() const {
|
||||
void WorldRenderer::MoveCam(float relativeX, float relativeY) {
|
||||
if (m_WorldVao == nullptr)
|
||||
return;
|
||||
m_Renderer->SetCamMovement({ relativeX, relativeY });
|
||||
|
||||
}
|
||||
|
||||
void WorldRenderer::ChangeZoom(float zoomStep) {
|
||||
@@ -144,7 +154,6 @@ void WorldRenderer::ChangeZoom(float zoomStep) {
|
||||
return;
|
||||
|
||||
m_Renderer->SetZoom(zoomStep);
|
||||
m_Renderer->SetCamMovement({});
|
||||
}
|
||||
|
||||
void WorldRenderer::Click() {
|
||||
|
||||
Reference in New Issue
Block a user