function updatePid(sprite, dt) {
const Kp = 0.1;
const Kd = 0.01;
const Ki = 0.01;
const course = Math.atan2(sprite.velocity[1], sprite.velocity[0]);
if (sprite.course != course) {
sprite.integral = 0;
sprite.previousError = 0;
}
sprite.course = course;
const error = clamp(sprite.bearing - course + Math.PI, 0, Math.PI * 2) - Math.PI;
const derivative = error - sprite.previousError / dt;
sprite.integral += (error * dt);
const speed = magnitude(sprite.velocity);
const delta = Kp * error + Kd * derivative + Ki * sprite.integral;
const correction = course + delta;
sprite.velocity[0] = speed * Math.cos(course + delta);
sprite.velocity[1] = speed * Math.sin(course + delta);
sprite.previousError = error;
return error;
}