3 #include <BLIB/Util/Random.hpp>
15 constexpr
unsigned int SparkCount = 400;
16 constexpr
float SparkSpawnRate = 1600.f;
17 const sf::Color SparkColor(252, 230, 30);
23 void SparkEmitter::update(Emitter::Proxy& proxy,
float dt,
float) {
24 residual += SparkSpawnRate * dt;
27 while (residual >= 1.f) {
31 const float a = bl::util::Random::get<float>(0.f, 360.f);
32 const float d = bl::util::Random::get<float>(1.f, 40.f);
33 const float v = bl::util::Random::get<float>(150.f, 900.f);
34 const float c = bl::math::cos(a);
35 const float s = bl::math::sin(a);
42 sp.
lifetime = bl::util::Random::get<float>(0.75f, 1.4f);
43 sp.
radius = bl::util::Random::get<float>(2.f, 7.f);
47 void SparkSink::update(Proxy& proxy, std::span<Evolution::Spark> particles,
float dt,
float) {
48 for (
auto& spark : particles) {
50 if (spark.time >= spark.lifetime) { proxy.destroy(spark); }
54 void SparkAffector::update(Proxy& proxy,
float dt,
float) {
55 for (
auto& spark : proxy.particles()) { spark.position += spark.velocity * dt; }
Parent namespace for all functionality unique to the game.
static sf::Vector2f WindowSize()