Events isolation

This commit is contained in:
JackCarterSmith 2024-12-03 19:57:33 +01:00
parent 2031e1a4c4
commit 29935cf54e
Signed by: JackCarterSmith
GPG Key ID: 832E52F4E23F8F24
6 changed files with 31 additions and 22 deletions

View File

@ -34,7 +34,7 @@ Graphic3DRenderer::Graphic3DRenderer() {
if (mMainCamera == nullptr) {
mMainCamera = std::make_unique<Camera>();
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);
}
}
}

View File

@ -34,7 +34,7 @@ void UI::CreateDefaultRenderWindow() {
mUIRender.setRepeated(false);
}
void UI::DrawUIOnRenderWindow(std::shared_ptr<sf::RenderWindow> context, float& viewX, float& viewY) {
void UI::DrawUIOnRenderWindow(std::shared_ptr<sf::RenderWindow>& 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<sf::RenderWindow> context) {
void CockpitUI::Draw(std::shared_ptr<sf::RenderWindow>& context) {
sf::BlendMode sBM = sf::BlendNone;
sf::RenderStates sRS(sBM);
@ -82,7 +82,7 @@ void CockpitUI::Draw(std::shared_ptr<sf::RenderWindow> context) {
}
WorldUI::WorldUI(unsigned int w, unsigned int h, std::shared_ptr<Graphic3DRenderer> engineInstance) : UI(w, h), mWorld3D(engineInstance) {
WorldUI::WorldUI(unsigned int w, unsigned int h, std::shared_ptr<Graphic3DRenderer>& 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<sf::RenderWindow> context) {
void WorldUI::Draw(std::shared_ptr<sf::RenderWindow>& context) {
sf::BlendMode sBM = sf::BlendNone;
sf::RenderStates sRS(sBM);

View File

@ -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<sf::RenderWindow> c) { DrawUIOnRenderWindow(c); }
virtual inline void Draw(std::shared_ptr<sf::RenderWindow>& 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<sf::RenderWindow> context, float& viewX, float& viewY);
inline void DrawUIOnRenderWindow(std::shared_ptr<sf::RenderWindow> context) { DrawUIOnRenderWindow(context, mRTSize); }
inline void DrawUIOnRenderWindow(std::shared_ptr<sf::RenderWindow> context, sf::Vector2f& view) { DrawUIOnRenderWindow(context, view.x, view.y); }
void DrawUIOnRenderWindow(std::shared_ptr<sf::RenderWindow>& context, float& viewX, float& viewY);
inline void DrawUIOnRenderWindow(std::shared_ptr<sf::RenderWindow>& context) { DrawUIOnRenderWindow(context, mRTSize); }
inline void DrawUIOnRenderWindow(std::shared_ptr<sf::RenderWindow>& 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<sf::RenderWindow>) override;
void Draw(std::shared_ptr<sf::RenderWindow>&) 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<Graphic3DRenderer> engineInstance);
WorldUI(unsigned int w, unsigned int h, std::shared_ptr<Graphic3DRenderer>& engineInstance);
~WorldUI() {}
WorldUI(WorldUI&&) = default;
@ -62,7 +62,7 @@ public:
WorldUI& operator= (WorldUI const&) = delete;
void Update() override;
void Draw(std::shared_ptr<sf::RenderWindow>) override;
void Draw(std::shared_ptr<sf::RenderWindow>&) override;
private:
std::shared_ptr<Graphic3DRenderer> mWorld3D;

View File

@ -35,7 +35,7 @@ Game* Game::smInstance = nullptr;
More details to write here...
*/
Game::Game(std::shared_ptr<sf::RenderWindow> mainWnd, bool dbgFlag) : mbDbgModeEnabled(dbgFlag), mMainWindow(mainWnd) {
Game::Game(std::shared_ptr<sf::RenderWindow>& 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)) {

View File

@ -45,7 +45,7 @@ public:
void EventWindowSizeChanged(unsigned int w, unsigned int h);
private:
Game(std::shared_ptr<sf::RenderWindow> mainWnd, bool dbgFlag) noexcept(false);
Game(std::shared_ptr<sf::RenderWindow>& mainWnd, bool dbgFlag) noexcept(false);
static Game* smInstance;
void Update();
@ -57,6 +57,7 @@ private:
std::unique_ptr<DebugUI> mDbgUI = nullptr;
SysTimer mSysTimer;
SysTimer mKeyEventTimer;
std::unique_ptr<SysTimer> mPerfsTimer = nullptr;
std::shared_ptr<sf::RenderWindow> mMainWindow;

View File

@ -16,7 +16,7 @@ struct MainWindowParams {
bool wndFullscreen = false;
};
static void CreateWindow(std::shared_ptr<sf::RenderWindow> wnd, MainWindowParams& params);
static void CreateWindow(std::shared_ptr<sf::RenderWindow>& 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<sf::RenderWindow> wnd, MainWindowParams& params) {
static void CreateWindow(std::shared_ptr<sf::RenderWindow>& 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<sf::RenderWindow> 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);
}
/*