#include "ExampleGenerator.h" #include #include #include #include "ConstantVelocity.h" ExampleGenerator::ExampleGenerator(ConstantVelocityBullet::Vector& bullets) : m_bullets {bullets}, m_delay {0}, m_interval {0.05f}, m_cone {0.4f}, m_angle {0.3f}, m_speed {70}, m_shift {10}, m_segments {3}, m_color {240, 0, 0, 255} { } void ExampleGenerator::update(const float dt) { m_delay += dt; if (m_delay > m_interval) { const auto pos = position(); m_delay -= m_interval; for (float i = 0; i <= m_segments; ++i) { const float angle = (m_angle - m_cone / 2 + m_cone * i / m_segments) * M_PI; const float cos = std::cos(angle); const float sin = std::sin(angle); ConstantVelocityBullet bullet; bullet.color = m_color; bullet.radius = 4; bullet.velocity.x = cos * m_speed; bullet.velocity.y = sin * m_speed; bullet.position.x = pos.x + cos * m_shift; bullet.position.y = pos.y + sin * m_shift; m_bullets.push_back(std::move(bullet)); } } m_angle += dt * 0.5f; if (m_angle >= 0.7f) { m_angle -= 0.4f; if (m_color.g == 0) m_color.g = 120; else m_color.g = 0; } }