Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/rendering
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-07-21 00:58:49 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-07-21 00:58:49 +1000
commit4b0bc220e4da1173f742a4973939b139bef562db (patch)
tree0ff66d5957575fa814fc10b8cd93e3dd378f45dc /source/rendering
parent607be749451aa40e3619e7ceab0927d1fcec8233 (diff)
Support for changing the game's timescale
Context-specific (like per-world) timescales can also be added later
Diffstat (limited to 'source/rendering')
-rw-r--r--source/rendering/StarEnvironmentPainter.cpp7
-rw-r--r--source/rendering/StarEnvironmentPainter.hpp3
-rw-r--r--source/rendering/StarWorldPainter.cpp6
-rw-r--r--source/rendering/StarWorldPainter.hpp1
4 files changed, 8 insertions, 9 deletions
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<AssetTextureGroup>(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<void()> 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<void()> lightWaiter);
void adjustLighting(WorldRenderData& renderData);