void timeout()

in roboschool/cpp-household/test-tool-qt4.cpp [209:268]


	void timeout()
	{
		ts += 1;
		double phase = (ts % 300) / 300.0;

		if (the_model_along_y != model_along_y->isChecked()) {
			the_model_along_y = model_along_y->isChecked();
			last_reload_time = 0;
		}

		load_model_or_robot();

		if (auto_rotate->isChecked())
			viz->zrot += 0.05;

		if (auto_switch->isChecked()) {
			if (phase > 0.6) {
				viz->dup_transparent_mode = 2;
			} else if (phase > 0.3) {
				viz->dup_transparent_mode = 1;
			} else {
				viz->dup_transparent_mode = 0;
			}
		}

		if (draw_lines->isChecked() != view_lines) {
			if (draw_lines->isChecked())
				viz->view_options |= SimpleRender::VIEW_LINES;
			else
				viz->view_options &= ~SimpleRender::VIEW_LINES;

		} else if ( !!(viz->view_options & SimpleRender::VIEW_LINES) != view_lines) {
			view_lines = !!(viz->view_options & SimpleRender::VIEW_LINES);
			draw_lines->setChecked(view_lines);
		}

		if (the_robot && the_robot->joints.size() > 0) {
			rolling_state_update = (rolling_state_update + 1) % (int)the_robot->joints.size();
			for (int c=0; c<(int)the_robot->joints.size(); ++c) {
				shared_ptr<Joint> j = the_robot->joints[c];
				if (!j) continue;
				QDoubleSpinBox* spin = joint_spins[c];
				float p = spin->value();
				switch (joint_control_mode[c]) {
				case 0: j->set_relative_servo_target(p, 0.08, 0.8); break;
				case 1: j->set_target_speed(p, 0.1, 20); break;
				case 2: j->set_motor_torque(p); break;
				default: assert(0);
				}
				if (rolling_state_update==c) {
					float pos, speed;
					j->joint_current_relative_position(&pos, &speed);
					joint_labels[c]->setText(QString("%1 %2") . arg(j->joint_name.c_str()) . arg(pos, 0, 'f', 3)); // this is slow
				}
			}
		}

		viz->render_on_offscreen_surface();
		viz->repaint();
	}