diff options
Diffstat (limited to 'ConstantVelocity.cpp')
-rw-r--r-- | ConstantVelocity.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/ConstantVelocity.cpp b/ConstantVelocity.cpp new file mode 100644 index 0000000..37f3c3d --- /dev/null +++ b/ConstantVelocity.cpp @@ -0,0 +1,42 @@ +#include "ConstantVelocity.h" + +#include <raylib.h> + + +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); +} |