From 5667776d9c80f2f2af856da01a14ac20bdf5a3e0 Mon Sep 17 00:00:00 2001 From: mattkae Date: Fri, 23 Dec 2022 12:50:10 -0500 Subject: Inifinite snow is working again --- themes/src/Snowflake.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'themes/src/Snowflake.cpp') diff --git a/themes/src/Snowflake.cpp b/themes/src/Snowflake.cpp index 7cab8b3..e9f6d5d 100644 --- a/themes/src/Snowflake.cpp +++ b/themes/src/Snowflake.cpp @@ -38,7 +38,7 @@ inline void initFlake(SnowflakeParticleRenderer* renderer, SnowflakeUpdateData* generateSnowflakeShape(&renderer->vertices, randomIntBetween(4, 16), randomFloatBetween(8.f, 16.f), randomFloatBetween(2.f, 6.f)); ud->numVertices = renderer->vertices.numElements - ud->vtxIdx; ud->velocity = Vector2(randomFloatBetween(-10, 10), randomFloatBetween(-100, -85)); - ud->position = Vector2(randomFloatBetween(0, renderer->xMax), randomFloatBetween(renderer->yMax, -renderer->yMax)); + ud->position = Vector2(randomFloatBetween(0, renderer->xMax), randomFloatBetween(renderer->yMax, 3 * renderer->yMax)); } void SnowflakeParticleRenderer::load(SnowflakeLoadParameters params, Renderer2d* renderer) { @@ -89,6 +89,11 @@ void SnowflakeParticleRenderer::load(SnowflakeLoadParameters params, Renderer2d* glBindVertexArray(0); } +inline void resetFlake(SnowflakeParticleRenderer* renderer, SnowflakeUpdateData* ud) { + ud->position.y = 2 * renderer->yMax; + ud->velocity = Vector2(randomFloatBetween(-10, 10), randomFloatBetween(-100, -85)); +} + inline void updateFlake(SnowflakeParticleRenderer* renderer, SnowflakeUpdateData* ud, i32 s, f32 dtSeconds, bool addWind) { if (addWind) ud->velocity += renderer->windSpeed; ud->position += ud->velocity * dtSeconds; @@ -97,6 +102,10 @@ inline void updateFlake(SnowflakeParticleRenderer* renderer, SnowflakeUpdateData for (i32 v = ud->vtxIdx; v < (ud->vtxIdx + ud->numVertices); v++) { renderer->vertices.data[v].vMatrix = m; } + + if (ud->position.y <= -256) { + resetFlake(renderer, ud); + } } void SnowflakeParticleRenderer::update(f32 dtSeconds) { -- cgit v1.2.1