From b6fd1823082cfa84993a70ba80243d3aa2f089f1 Mon Sep 17 00:00:00 2001 From: Aki Date: Wed, 21 Dec 2022 01:27:55 +0100 Subject: Added simple window to change simulation time factor --- kurator/src/Battle.cpp | 9 +++++++-- kurator/src/Battle.h | 1 + kurator/src/Session.cpp | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/kurator/src/Battle.cpp b/kurator/src/Battle.cpp index b7893da..9ec2bdd 100644 --- a/kurator/src/Battle.cpp +++ b/kurator/src/Battle.cpp @@ -7,6 +7,7 @@ #include #include +#include #include #include @@ -29,7 +30,8 @@ namespace kurator Battle::Battle(std::shared_ptr _session) : session {std::move(_session)}, - battle {sim::prepare(campaign::scenarios::example())} + battle {sim::prepare(campaign::scenarios::example())}, + time_factor {1.0} { battle->dispatcher().sink().connect<&Battle::on_hit>(*this); battle->dispatcher().sink().connect<&Battle::on_ship_left>(*this); @@ -52,7 +54,7 @@ Battle::~Battle() void Battle::update(const float dt) { - battle->update(dt); + battle->update(dt * time_factor); auto& registry = battle->registry(); auto timers = registry.view(); for (auto&& [entity, timer] : timers.each()) { @@ -70,6 +72,9 @@ Battle::update(const float dt) pop.speed.y -= damp.y; } balance.update(registry); + ImGui::Begin("Controls"); + ImGui::SliderFloat("Time Factor", &time_factor, 0.1f, 3.0f); + ImGui::End(); if (IsKeyPressed(KEY_SPACE)) session->set(std::make_shared(session, log)); } diff --git a/kurator/src/Battle.h b/kurator/src/Battle.h index 009f9c3..1ebfa35 100644 --- a/kurator/src/Battle.h +++ b/kurator/src/Battle.h @@ -30,6 +30,7 @@ private: std::unique_ptr battle; ForceBalance balance; EventLog log; + float time_factor; }; diff --git a/kurator/src/Session.cpp b/kurator/src/Session.cpp index 34f8214..4f8e8e2 100644 --- a/kurator/src/Session.cpp +++ b/kurator/src/Session.cpp @@ -25,9 +25,9 @@ Session::run() while (!window.should_close()) { if (!scene) return; + rlImGuiBegin(); scene->update(GetFrameTime()); BeginDrawing(); - rlImGuiBegin(); scene->draw(); rlImGuiEnd(); EndDrawing(); -- cgit v1.1