From 4b0bc220e4da1173f742a4973939b139bef562db Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Fri, 21 Jul 2023 00:58:49 +1000 Subject: Support for changing the game's timescale Context-specific (like per-world) timescales can also be added later --- source/rendering/StarEnvironmentPainter.cpp | 7 ++----- source/rendering/StarEnvironmentPainter.hpp | 3 +-- source/rendering/StarWorldPainter.cpp | 6 ++++-- source/rendering/StarWorldPainter.hpp | 1 + 4 files changed, 8 insertions(+), 9 deletions(-) (limited to 'source/rendering') diff --git a/source/rendering/StarEnvironmentPainter.cpp b/source/rendering/StarEnvironmentPainter.cpp index aa2763b..816281b 100644 --- a/source/rendering/StarEnvironmentPainter.cpp +++ b/source/rendering/StarEnvironmentPainter.cpp @@ -29,16 +29,13 @@ EnvironmentPainter::EnvironmentPainter(RendererPtr renderer) { m_renderer = move(renderer); m_textureGroup = make_shared(m_renderer->createTextureGroup(TextureGroupSize::Large)); m_timer = 0; - m_lastTime = 0; m_rayPerlin = PerlinF(1, RayPerlinFrequency, RayPerlinAmplitude, 0, 2.0f, 2.0f, Random::randu64()); } -void EnvironmentPainter::update() { +void EnvironmentPainter::update(float dt) { // Allows the rays to change alpha with time. - int64_t currentTime = Time::monotonicMilliseconds(); - m_timer += (currentTime - m_lastTime) / 1000.0; + m_timer += dt; m_timer = std::fmod(m_timer, Constants::pi * 100000.0); - m_lastTime = currentTime; } void EnvironmentPainter::renderStars(float pixelRatio, Vec2F const& screenSize, SkyRenderData const& sky) { diff --git a/source/rendering/StarEnvironmentPainter.hpp b/source/rendering/StarEnvironmentPainter.hpp index 3a90b69..4b9fdb8 100644 --- a/source/rendering/StarEnvironmentPainter.hpp +++ b/source/rendering/StarEnvironmentPainter.hpp @@ -17,7 +17,7 @@ class EnvironmentPainter { public: EnvironmentPainter(RendererPtr renderer); - void update(); + void update(float dt); void renderStars(float pixelRatio, Vec2F const& screenSize, SkyRenderData const& sky); void renderDebrisFields(float pixelRatio, Vec2F const& screenSize, SkyRenderData const& sky); @@ -67,7 +67,6 @@ private: AssetTextureGroupPtr m_textureGroup; double m_timer; - int64_t m_lastTime; PerlinF m_rayPerlin; uint64_t m_starsHash; diff --git a/source/rendering/StarWorldPainter.cpp b/source/rendering/StarWorldPainter.cpp index e033ee1..d89cfe1 100644 --- a/source/rendering/StarWorldPainter.cpp +++ b/source/rendering/StarWorldPainter.cpp @@ -45,14 +45,16 @@ WorldCamera& WorldPainter::camera() { return m_camera; } +void WorldPainter::update(float dt) { + m_environmentPainter->update(dt); +} + void WorldPainter::render(WorldRenderData& renderData, function lightWaiter) { m_camera.setScreenSize(m_renderer->screenSize()); m_camera.setTargetPixelRatio(Root::singleton().configuration()->get("zoomLevel").toFloat()); m_assets = Root::singleton().assets(); - m_environmentPainter->update(); - m_tilePainter->setup(m_camera, renderData); // Stars, Debris Fields, Sky, and Orbiters diff --git a/source/rendering/StarWorldPainter.hpp b/source/rendering/StarWorldPainter.hpp index 0ae6a7d..ce7f1d8 100644 --- a/source/rendering/StarWorldPainter.hpp +++ b/source/rendering/StarWorldPainter.hpp @@ -23,6 +23,7 @@ public: WorldCamera& camera(); + void update(float dt); void render(WorldRenderData& renderData, function lightWaiter); void adjustLighting(WorldRenderData& renderData); -- cgit v1.2.3