static void rotate_system(ecs_iter_t *it) {
const SafiInput *in = ecs_singleton_get(it->world, SafiInput);
SafiTransform *t = ecs_field(it, SafiTransform, 0);
float rate = 1.5f * it->delta_time;
for (int i = 0; i < it->count; ++i) {
if (in->keys[SDL_SCANCODE_LEFT]) { versor q; glm_quatv(q, rate, (vec3){0,1,0}); glm_quat_mul(q, t[i].rotation, t[i].rotation); }
if (in->keys[SDL_SCANCODE_RIGHT]) { versor q; glm_quatv(q, -rate, (vec3){0,1,0}); glm_quat_mul(q, t[i].rotation, t[i].rotation); }
}
}
ECS_SYSTEM(world, rotate_system, EcsOnUpdate, SafiTransform);