From 29935cf54ee31125f330dcae01a30091df2aa9ee Mon Sep 17 00:00:00 2001 From: JackCarterSmith Date: Tue, 3 Dec 2024 19:57:33 +0100 Subject: [PATCH] Events isolation --- Engine/Graphics/3DRenderer.cpp | 6 +++--- Engine/Graphics/UI.cpp | 8 ++++---- Engine/Graphics/UI.hpp | 14 +++++++------- Game.cpp | 5 +++-- Game.hpp | 3 ++- ProtoTank.cpp | 17 ++++++++++++----- 6 files changed, 31 insertions(+), 22 deletions(-) diff --git a/Engine/Graphics/3DRenderer.cpp b/Engine/Graphics/3DRenderer.cpp index ae504d9..d02bd9b 100644 --- a/Engine/Graphics/3DRenderer.cpp +++ b/Engine/Graphics/3DRenderer.cpp @@ -34,7 +34,7 @@ Graphic3DRenderer::Graphic3DRenderer() { if (mMainCamera == nullptr) { mMainCamera = std::make_unique(); mMainCamera->SetPosition(0.0f, 1.5f, -8.0f); - mMainCamera->SetFrustrum(90.0f, mRTSize.x/mRTSize.y, 1.0f, 100.f); + mMainCamera->SetFrustrum(75.0f, mRTSize.x/mRTSize.y, 1.0f, 100.f); mMainCamera->UpdateCamView(); } @@ -182,8 +182,8 @@ void Graphic3DRenderer::Draw(sf::RenderTexture& context) { v_tri[1].position = sf::Vector2f(M3D_V4GetX(V2), M3D_V4GetY(V2)); v_tri[2].position = sf::Vector2f(M3D_V4GetX(V3), M3D_V4GetY(V3)); v_tri[3] = v_tri[0]; - context.draw(v_tri, 4, sf::LineStrip, sRS); - //context.draw(v_tri, 3, sf::Triangles, sRS); + //context.draw(v_tri, 4, sf::LineStrip, sRS); + context.draw(v_tri, 3, sf::Triangles, sRS); } } } diff --git a/Engine/Graphics/UI.cpp b/Engine/Graphics/UI.cpp index 55c26b4..fd86dd8 100644 --- a/Engine/Graphics/UI.cpp +++ b/Engine/Graphics/UI.cpp @@ -34,7 +34,7 @@ void UI::CreateDefaultRenderWindow() { mUIRender.setRepeated(false); } -void UI::DrawUIOnRenderWindow(std::shared_ptr context, float& viewX, float& viewY) { +void UI::DrawUIOnRenderWindow(std::shared_ptr& context, float& viewX, float& viewY) { sf::Sprite spriteRender; spriteRender.setTexture(this->mUIRender.getTexture()); spriteRender.setPosition(0.0f, 0.0f); @@ -55,7 +55,7 @@ void CockpitUI::Update() { } -void CockpitUI::Draw(std::shared_ptr context) { +void CockpitUI::Draw(std::shared_ptr& context) { sf::BlendMode sBM = sf::BlendNone; sf::RenderStates sRS(sBM); @@ -82,7 +82,7 @@ void CockpitUI::Draw(std::shared_ptr context) { } -WorldUI::WorldUI(unsigned int w, unsigned int h, std::shared_ptr engineInstance) : UI(w, h), mWorld3D(engineInstance) { +WorldUI::WorldUI(unsigned int w, unsigned int h, std::shared_ptr& engineInstance) : UI(w, h), mWorld3D(engineInstance) { CreateDefaultRenderWindow(); mUIRender.clear(sf::Color::Black); @@ -93,7 +93,7 @@ void WorldUI::Update() { } -void WorldUI::Draw(std::shared_ptr context) { +void WorldUI::Draw(std::shared_ptr& context) { sf::BlendMode sBM = sf::BlendNone; sf::RenderStates sRS(sBM); diff --git a/Engine/Graphics/UI.hpp b/Engine/Graphics/UI.hpp index 03372ba..ba1f68d 100644 --- a/Engine/Graphics/UI.hpp +++ b/Engine/Graphics/UI.hpp @@ -15,7 +15,7 @@ public: void SetRTSize(unsigned int w, unsigned int h, bool recreateCanvas = false); virtual void Update() = 0; - virtual inline void Draw(std::shared_ptr c) { DrawUIOnRenderWindow(c); } + virtual inline void Draw(std::shared_ptr& c) { DrawUIOnRenderWindow(c); } protected: UI(unsigned int w, unsigned int h) : mRTSize(sf::Vector2f(w, h)) {} @@ -25,9 +25,9 @@ protected: sf::RenderTexture mUIRender; // The screen to draw onto void CreateDefaultRenderWindow(); - void DrawUIOnRenderWindow(std::shared_ptr context, float& viewX, float& viewY); - inline void DrawUIOnRenderWindow(std::shared_ptr context) { DrawUIOnRenderWindow(context, mRTSize); } - inline void DrawUIOnRenderWindow(std::shared_ptr context, sf::Vector2f& view) { DrawUIOnRenderWindow(context, view.x, view.y); } + void DrawUIOnRenderWindow(std::shared_ptr& context, float& viewX, float& viewY); + inline void DrawUIOnRenderWindow(std::shared_ptr& context) { DrawUIOnRenderWindow(context, mRTSize); } + inline void DrawUIOnRenderWindow(std::shared_ptr& context, sf::Vector2f& view) { DrawUIOnRenderWindow(context, view.x, view.y); } }; @@ -44,7 +44,7 @@ public: CockpitUI& operator= (CockpitUI const&) = delete; void Update() override; - void Draw(std::shared_ptr) override; + void Draw(std::shared_ptr&) override; private: sf::Texture mStaticCockpitTexture; @@ -53,7 +53,7 @@ private: class WorldUI final : public UI { public: - WorldUI(unsigned int w, unsigned int h, std::shared_ptr engineInstance); + WorldUI(unsigned int w, unsigned int h, std::shared_ptr& engineInstance); ~WorldUI() {} WorldUI(WorldUI&&) = default; @@ -62,7 +62,7 @@ public: WorldUI& operator= (WorldUI const&) = delete; void Update() override; - void Draw(std::shared_ptr) override; + void Draw(std::shared_ptr&) override; private: std::shared_ptr mWorld3D; diff --git a/Game.cpp b/Game.cpp index 329086d..f65d26b 100644 --- a/Game.cpp +++ b/Game.cpp @@ -35,7 +35,7 @@ Game* Game::smInstance = nullptr; More details to write here... */ -Game::Game(std::shared_ptr mainWnd, bool dbgFlag) : mbDbgModeEnabled(dbgFlag), mMainWindow(mainWnd) { +Game::Game(std::shared_ptr& mainWnd, bool dbgFlag) : mbDbgModeEnabled(dbgFlag), mMainWindow(mainWnd) { unsigned int wndWidth, wndHeight; GetDefaultWindowSize(wndWidth, wndHeight); @@ -133,7 +133,8 @@ void Game::Update() { } void Game::KeyboardInputsCheck() { - const float deltaTimeS = mSysTimer.GetDeltaTime() / 1000; + const float deltaTimeS = mKeyEventTimer.GetDeltaTime() / 1000; + mKeyEventTimer.Reset(); if (mMainWindow->hasFocus()) { if (sf::Keyboard::isKeyPressed(sf::Keyboard::Z)) { diff --git a/Game.hpp b/Game.hpp index d84515b..7fafb86 100644 --- a/Game.hpp +++ b/Game.hpp @@ -45,7 +45,7 @@ public: void EventWindowSizeChanged(unsigned int w, unsigned int h); private: - Game(std::shared_ptr mainWnd, bool dbgFlag) noexcept(false); + Game(std::shared_ptr& mainWnd, bool dbgFlag) noexcept(false); static Game* smInstance; void Update(); @@ -57,6 +57,7 @@ private: std::unique_ptr mDbgUI = nullptr; SysTimer mSysTimer; + SysTimer mKeyEventTimer; std::unique_ptr mPerfsTimer = nullptr; std::shared_ptr mMainWindow; diff --git a/ProtoTank.cpp b/ProtoTank.cpp index 170e155..c1add38 100644 --- a/ProtoTank.cpp +++ b/ProtoTank.cpp @@ -16,7 +16,7 @@ struct MainWindowParams { bool wndFullscreen = false; }; -static void CreateWindow(std::shared_ptr wnd, MainWindowParams& params); +static void CreateWindow(std::shared_ptr& wnd, MainWindowParams& params); //static void ForceWindowRatio(sf::RenderWindow* wnd); int main(int argc, char** argv) { @@ -62,6 +62,10 @@ int main(int argc, char** argv) { //ForceWindowRatio(mainWindow.get()); break; + case sf::Event::MouseMoved: + arcadeGame.EventMouseMoved(event.mouseMove.x, event.mouseMove.y); + break; + //case sf::Event::LostFocus: // EventSuspending(); // break; @@ -75,7 +79,7 @@ int main(int argc, char** argv) { } // Focus only actions - if (mainWindow->hasFocus()) { + /*if (mainWindow->hasFocus()) { switch (event.type) { case sf::Event::MouseMoved: arcadeGame.EventMouseMoved(event.mouseMove.x, event.mouseMove.y); @@ -84,7 +88,7 @@ int main(int argc, char** argv) { default: break; } - } + }*/ } // Focused-only keys actions @@ -111,11 +115,14 @@ int main(int argc, char** argv) { break; } + mainWindow->close(); + mainWindow.reset(); + log.PrintInfo(LOGGER_MSG_FT("Bye bye!")); return EXIT_SUCCESS; } -static void CreateWindow(std::shared_ptr wnd, MainWindowParams& params) { +static void CreateWindow(std::shared_ptr& wnd, MainWindowParams& params) { sf::Uint32 wndStyle = sf::Style::Close | sf::Style::Titlebar; sf::VideoMode vMode; @@ -137,12 +144,12 @@ static void CreateWindow(std::shared_ptr wnd, MainWindowParams }*/ wnd->create(vMode, "ProtoTank", wndStyle, params.wndContextSettings); + wnd->setIcon(64, 64, _aicon_bin); wnd->setVerticalSyncEnabled(false); // Never use simultaneously with framerate limiter wnd->setFramerateLimit(60); // Never use simultaneously with VSync wnd->setKeyRepeatEnabled(false); wnd->setMouseCursorVisible(true); - wnd->setIcon(64, 64, _aicon_bin); } /*