-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);
- }