-void RandomWalk::Update(int dt) {
- switch_time -= dt;
- lerp_time -= dt;
- if (switch_time < 0) {
- switch_time += 2500 + (random.Next<unsigned short>() % 5000);
- lerp_max = 1500 + (random.Next<unsigned short>() % 1000);
- lerp_time = lerp_max;
- Change();
- } else if (lerp_time > 0) {
- float a = std::min(lerp_time / lerp_max, 1.0f);
- Controlled().Velocity(mix(target_vel, start_vel, a));
- Controlled().AngularVelocity(mix(target_rot, start_rot, a));
- } else {
- Controlled().Velocity(target_vel);
- Controlled().AngularVelocity(target_rot);
- }
+void AIController::StartWandering(
+ float speed,
+ float distance,
+ float radius,
+ float displacement
+) noexcept {
+ wandering = true;
+ wander_speed = speed;
+ wander_dist = distance;
+ wander_radius = radius;
+ wander_disp = displacement;
+}
+void AIController::StopWandering() noexcept {
+ wandering = false;