#include "Bullets.h" #include ConstantVelocitySystem::ConstantVelocitySystem() : ConstantVelocitySystem(10000) { } ConstantVelocitySystem::ConstantVelocitySystem(int reserved) { m_bullets.reserve(reserved); } void ConstantVelocitySystem::update(const float dt) { const int max_height = GetScreenHeight() + MARGIN; const int min_width = 0 - MARGIN; const int max_width = GetScreenWidth() + MARGIN; auto it = m_bullets.begin(); while (it != m_bullets.end()) { auto& bullet = *it; bullet.position.x += bullet.velocity.x * dt; bullet.position.y += bullet.velocity.y * dt; if (bullet.position.y > max_height || bullet.position.x < min_width || bullet.position.x > max_width) it = m_bullets.erase(it); else ++it; } } void ConstantVelocitySystem::draw() { for (const auto& bullet : m_bullets) DrawCircle(bullet.position.x, bullet.position.y, bullet.radius, bullet.color); }