feat: improved slerp amount argument for camera controller

This commit is contained in:
Sara 2024-09-27 16:07:58 +02:00
parent 30d8182f4d
commit a9bc57a175

View file

@ -54,11 +54,10 @@ void CameraControllerTick(CameraController *self, double delta) {
// ... and maximum frame step size
float const step = self->rotation_speed * time_mul * delta;
if(angle > 0.f)
target.rotation = QuaternionSlerp(current.rotation, target.rotation, fminf(fminf(step, angle) / angle, 0.99f));
target.rotation = QuaternionSlerp(current.rotation, target.rotation, step);
if(step > angle && self->time_rotated > delta)
self->time_rotated = fminf(self->time_rotated - 3.f * delta, self->max_speed_time * 0.5f);
else if(step > angle)
self->time_rotated = 0.f;
self->time_rotated += delta;
self->time_rotated -= delta;
else
self->time_rotated += delta;
self->transform.tc->set_global_transform(self->transform.data, target);
}