From d90ab6b90f2507970c2da52b166d26a7c9b48d66 Mon Sep 17 00:00:00 2001 From: Aki Date: Sat, 31 Dec 2022 14:27:11 +0100 Subject: Extracted FloatingMovement component to own header and impl --- sim/src/BaseBattle.cpp | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) (limited to 'sim/src/BaseBattle.cpp') diff --git a/sim/src/BaseBattle.cpp b/sim/src/BaseBattle.cpp index 4b65139..99c1b99 100644 --- a/sim/src/BaseBattle.cpp +++ b/sim/src/BaseBattle.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -56,7 +57,7 @@ BaseBattle::update(const float dt) time += dt; pick_random_targets(); keep_at_range(); - floating_movement(dt); + FloatingMovement::update(_registry, _dispatcher, dt); turrets(dt); kill_off_dead(); manager.clear(_registry); // registry supports on destructions events @@ -90,29 +91,6 @@ BaseBattle::keep_at_range() void -BaseBattle::floating_movement(const float dt) -{ - auto view = _registry.view(); - for (auto&& [entity, transform, movement, ai] : view.each()) { - const auto offset = ai.destination - transform.position; - const auto at_destination = offset.magnitude() > movement.destination_boundary; - const auto acceleration = - at_destination ? - offset.normalized().scale(movement.acceleration * dt) : - offset.normalized().scale(-1 * movement.deceleration * dt); - movement.speed.x += acceleration.x; - movement.speed.y += acceleration.y; - if (movement.speed.magnitude() > movement.max_speed) - movement.speed = movement.speed.normalized().scale(movement.max_speed); - const auto speed = movement.speed.scale(dt); - transform.position.x += speed.x; - transform.position.y += speed.y; - transform.angle = speed.angle(); - } -} - - -void BaseBattle::turrets(const float dt) { auto view = _registry.view(); -- cgit v1.1