pub fn exp_decay(current: f32, target: f32, rate: f32, dt: f32) -> f32
Exponential decay: value decays toward target with rate per second