update particles randomizer

This commit is contained in:
MihailRis 2024-11-03 02:26:11 +03:00
parent 7abb1a88c7
commit 082a87db4e
3 changed files with 6 additions and 3 deletions

View File

@ -39,7 +39,7 @@ void Emitter::update(float delta, std::vector<Particle>& particles) {
// spawn particle
Particle particle = prototype;
particle.emitter = this;
particle.random = rand();
particle.random = random.rand32();
particle.position = position;
particle.velocity += glm::ballRand(1.0f) * explosion;
particles.push_back(std::move(particle));

View File

@ -7,6 +7,7 @@
#include "typedefs.hpp"
#include "maths/UVRegion.hpp"
#include "maths/util.hpp"
class Emitter;
@ -50,6 +51,8 @@ class Emitter {
float timer = 0.0f;
/// @brief Random velocity magnitude applying to spawned particles
glm::vec3 explosion {8.0f};
util::PseudoRandom random;
public:
ParticleBehaviour behaviour;

View File

@ -22,7 +22,7 @@ ParticlesRenderer::ParticlesRenderer(
auto region = util::get_texture_region(assets, "blocks:grass_top", "");
emitters.push_back(std::make_unique<Emitter>(glm::vec3(0, 80, 0), Particle {
nullptr, 0, glm::vec3(), glm::vec3(), 5.0f, region.region
},region.texture, 0.002f, -1));
}, region.texture, 0.002f, -1));
}
ParticlesRenderer::~ParticlesRenderer() = default;
@ -71,7 +71,7 @@ void ParticlesRenderer::renderParticles(const Camera& camera, float delta) {
light = MainBatch::sampleLight(
particle.position, chunks, backlight
);
light *= 0.7f + (particle.random % 300) * 0.001f;
light *= 0.8f + (particle.random % 200) * 0.001f;
}
batch->quad(
particle.position,