diff options
author | Jaro <59013720+JaroWMR@users.noreply.github.com> | 2024-12-12 18:47:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-12 18:47:54 +0100 |
commit | fd403d038b017ec8976023471073329896035e36 (patch) | |
tree | fcf4af55aa56b2de19e87e5246888e1af9f4f527 /src/crepe/system/AISystem.cpp | |
parent | 05a33d4793520fa84a93bc79882ef29d39cd08e5 (diff) | |
parent | ab1423f48d82ba9b0619ec107639a80773edbfc2 (diff) |
Merge pull request #64 from lonkaars/jaro/physics-system-improvement
Jaro/physics system improvement
Diffstat (limited to 'src/crepe/system/AISystem.cpp')
-rw-r--r-- | src/crepe/system/AISystem.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/crepe/system/AISystem.cpp b/src/crepe/system/AISystem.cpp index d231c7c..680dbb8 100644 --- a/src/crepe/system/AISystem.cpp +++ b/src/crepe/system/AISystem.cpp @@ -13,12 +13,10 @@ using namespace std::chrono; void AISystem::update() { const Mediator & mediator = this->mediator; ComponentManager & mgr = mediator.component_manager; - LoopTimerManager & timer = mediator.loop_timer; - RefVector<AI> ai_components = mgr.get_components_by_type<AI>(); LoopTimerManager & loop_timer = mediator.loop_timer; + RefVector<AI> ai_components = mgr.get_components_by_type<AI>(); - //TODO: Use fixed loop dt (this is not available at master at the moment) - duration_t dt = loop_timer.get_delta_time(); + float dt = loop_timer.get_scaled_fixed_delta_time().count(); // Loop through all AI components for (AI & ai : ai_components) { @@ -45,7 +43,7 @@ void AISystem::update() { // Calculate the acceleration (using the above calculated force) vec2 acceleration = force / rigidbody.data.mass; // Finally, update Rigidbody's velocity - rigidbody.data.linear_velocity += acceleration * duration_cast<seconds>(dt).count(); + rigidbody.data.linear_velocity += acceleration * dt; } } @@ -146,7 +144,7 @@ vec2 AISystem::arrive(const AI & ai, const Rigidbody & rigidbody, } float speed = distance / ai.arrive_deceleration; - speed = std::min(speed, rigidbody.data.max_linear_velocity.length()); + speed = std::min(speed, rigidbody.data.max_linear_velocity); vec2 desired_velocity = to_target * (speed / distance); return desired_velocity - rigidbody.data.linear_velocity; |