From 9e817c39ce6fc5ee11f2005dabfa0dab1fb952fe Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 4 Nov 2025 17:55:01 +0300 Subject: [PATCH] disable mouse camera control if non-standard camera used --- src/frontend/LevelFrontend.cpp | 3 +-- src/logic/PlayerController.cpp | 5 ++--- src/objects/Player.cpp | 6 ++++++ src/objects/Player.hpp | 6 ++++++ 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/frontend/LevelFrontend.cpp b/src/frontend/LevelFrontend.cpp index 5dfdf822..9a8553da 100644 --- a/src/frontend/LevelFrontend.cpp +++ b/src/frontend/LevelFrontend.cpp @@ -49,8 +49,7 @@ LevelFrontend::LevelFrontend( auto sound = rassets.get(material->stepsSound); glm::vec3 pos {}; auto soundsCamera = currentPlayer->currentCamera.get(); - if (soundsCamera == currentPlayer->spCamera.get() || - soundsCamera == currentPlayer->tpCamera.get()) { + if (currentPlayer->isCurrentCameraBuiltin()) { soundsCamera = currentPlayer->fpCamera.get(); } bool relative = player == currentPlayer && diff --git a/src/logic/PlayerController.cpp b/src/logic/PlayerController.cpp index 0ced9425..9de01404 100644 --- a/src/logic/PlayerController.cpp +++ b/src/logic/PlayerController.cpp @@ -207,8 +207,7 @@ void CameraControl::update( tpCamera->front = camera->front; tpCamera->right = camera->right; } - if (player.currentCamera == spCamera || player.currentCamera == tpCamera || - player.currentCamera == camera) { + if (player.isCurrentCameraBuiltin()) { player.currentCamera->setFov(glm::radians(settings.fov.get())); } } @@ -280,7 +279,7 @@ void PlayerController::postUpdate( updateFootsteps(delta); } - if (!pause && input) { + if (!pause && input && player.isCurrentCameraBuiltin()) { camControl.updateMouse(this->input, windowHeight); } camControl.refreshRotation(); diff --git a/src/objects/Player.cpp b/src/objects/Player.cpp index f14f9d2d..f27dc743 100644 --- a/src/objects/Player.cpp +++ b/src/objects/Player.cpp @@ -84,6 +84,12 @@ Hitbox* Player::getHitbox() { return nullptr; } +bool Player::isCurrentCameraBuiltin() const { + return currentCamera.get() == fpCamera.get() || + currentCamera.get() == spCamera.get() || + currentCamera.get() == tpCamera.get(); +} + void Player::updateSelectedEntity() { selectedEid = selection.entity; } diff --git a/src/objects/Player.hpp b/src/objects/Player.hpp index 7d6523f2..18c5a599 100644 --- a/src/objects/Player.hpp +++ b/src/objects/Player.hpp @@ -131,6 +131,8 @@ public: return position; } + bool isCurrentCameraBuiltin() const; + Hitbox* getHitbox(); void setSpawnPoint(glm::vec3 point); @@ -147,4 +149,8 @@ public: inline u64id_t getId() const { return id; } + + Level& getLevel() const { + return level; + } };