void Screensaver::update(double time) { rotation = time*0.1; double timestep = (time-last_update); bool need_sort = false; std::vector::iterator it; for (it = numbers.begin(); it != numbers.end(); ++it) { it->translate(0, timestep*it->get_speed(), 0); if(it->get_position().y > 8) { it->set_position(drand(-5, 5), -20, drand(-9, 1)); it->set_speed(drand(0.1, 0.2)); need_sort = true; } } if (need_sort) { std::sort(numbers.begin(), numbers.end(), DepthSortingComp()); } last_update = time; }