示例#1
0
void display()
{
	if (recordVideo)
	{
		SceneManager_pump(1.0 / 25.0, evts);
	}
	else
	{
		SceneManager_pump(timenow - ltime, evts);
	}
	if (hasQuit)
		return;

	SceneManager_eventsZero(evts);
	if (recordVideo)
	{
		if (buff == 0)
			buff = malloc(width * height * 3);


		glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, buff);
		fwrite(buff, width * height *3, 1, videoFile);
	}

	glutSwapBuffers();
	ltime = getNanoTime();
}
示例#2
0
void gameLoop()
{
	if (glutGetWindow() == 0)
	{
		OS_quit();
	}

	timenow = getNanoTime();

	while (timenow - ltime < (frameTime))
	{
		timenow = getNanoTime();
	}

	glutPostRedisplay();
}
MovementQuadruple::MovementQuadruple(unsigned int newThrust, float newRoll, float newPitch, float newYawrate)
{
	this->thrust = newThrust;
	this->roll = newRoll;
	this->pitch = newPitch;
	this->yawrate = newYawrate;
	this->timestamp = getNanoTime();
}
示例#4
0
USING_YJJ_NAMESPACE

#define REDIS_DIRECT_USAGE

string JournalHandler::getDefaultName(const string& prefix)
{
    std::stringstream ss;
    ss << prefix << "_" << getNanoTime();
    return ss.str();
}
示例#5
0
static void mumble_audiothread(MumbleClient *client)
{
	while (thread_isConnected(client)) {

		pthread_mutex_lock(&client->lock);
		while (client->connected && client->audio_job == NULL)
			pthread_cond_wait(&client->cond, &client->lock);
		pthread_mutex_unlock(&client->lock);

		// Signal ended up being a disconnect
		if (!thread_isConnected(client)) {
			break;
		}

		while (thread_isPlaying(client)) {
			unsigned long long start, stop, diff;

			start = getNanoTime();

			pthread_mutex_lock(&client->lock);
			audio_transmission_event(client);
			pthread_mutex_unlock(&client->lock);

			struct timespec sleep, remain;
			
			stop = getNanoTime();

			diff = fabs((double) stop - start);
			sleep.tv_nsec = 10000000LL - diff;

			while (nanosleep(&sleep, &remain) != 0) {
				sleep.tv_sec = remain.tv_sec;
				sleep.tv_nsec = remain.tv_nsec;
			}
		}
	}
}
示例#6
0
void gameLoop()
{
	SDL_Event event;

	/* Grab all the events off the queue. */
	while( SDL_PollEvent( &event ) )
	{
		int k = -1;

		switch( event.type )
		{
		case SDL_MOUSEMOTION:
			mouseX = event.motion.x;
			mouseY = event.motion.y;
			break;

		case SDL_MOUSEBUTTONDOWN:
			SceneManager_eventsAdd(evts, SCENEEVENT_TYPE_FINGERDOWN, 0, event.button.x, event.button.y);
			break;

		case SDL_MOUSEBUTTONUP:
			SceneManager_eventsAdd(evts, SCENEEVENT_TYPE_FINGERUP, 0, event.button.x, event.button.y);
			break;

		case SDL_VIDEORESIZE:
			reshape(event.resize.w, event.resize.h);
			break;

		case SDL_KEYDOWN:
			switch (event.key.keysym.sym)
			{
			case SDLK_UP:
				k = OS_key_up;
				break;
			case SDLK_DOWN:
				k = OS_key_down;
				break;
			case SDLK_LEFT:
				k = OS_key_left;
				break;
			case SDLK_RIGHT:
				k = OS_key_right;
				break;
			case SDLK_a:
				k = OS_key_rol;
				break;
			case SDLK_d:
				k = OS_key_ror;
				break;
			case SDLK_RETURN:
			case SDLK_KP_ENTER:
				k = OS_key_ok;
				break;
			case SDLK_ESCAPE:
				k = OS_key_cancel;
				break;
			default:
				break;
			}

			if (k != -1)
				SceneManager_eventsAdd(evts, SCENEEVENT_TYPE_KEYDOWN, k, 0, 0);
			break;

		case SDL_QUIT:
			OS_quit();
			break;

		default:
			break;
		}
	}


	timenow = getNanoTime();

	while (timenow - ltime < (frameTime))
	{
		timenow = getNanoTime();
	}

	display();
	ltime = timenow;
}
示例#7
0
	void run() {
		running = true;

		long long lastTime = 0;
		long long startTime;
		long long passedTime;

		long long frameTimeNano = (long long)(1000000000.0 / frameCap);
		long long inputTimeNano = (long long)(1000000000.0 / inputCap);
		long long updateTimeNano = (long long)(1000000000.0 / updateCap);

		int frames = 0;
		int updates = 0;
		int inputs = 0;

		long long unprocessedTime_Render = 0;
		long long unprocessedTime_FPScount = 0;
		long long unprocessedTime_Input = 0;
		long long unprocessedTime_Update = 0;


		while (running) {
			if (window->closed()) {
				running = false;
			}

			if (lastTime == 0) {
				lastTime = getNanoTime();
			}
			startTime = getNanoTime();
			passedTime = startTime - lastTime;
			lastTime = startTime;

			unprocessedTime_Render += passedTime;
			unprocessedTime_FPScount += passedTime;
			unprocessedTime_Input += passedTime;
			unprocessedTime_Update += passedTime;


			if (unprocessedTime_Input >= inputTimeNano) {
				input(unprocessedTime_Input / 1000000000.0);
				inputs++;
				unprocessedTime_Input = 0;
			}

			if (unprocessedTime_Update >= updateTimeNano) {
				update(unprocessedTime_Update / 1000000000.0);
				updates++;
				unprocessedTime_Update = 0;
			}

			if (unprocessedTime_Render > frameTimeNano) {
				glClear(GL_COLOR_BUFFER_BIT);
				glLoadIdentity();
				render();
				frames++;
				window->update();
				unprocessedTime_Render = 0;
			}

			if (unprocessedTime_FPScount >= 1000000000) {
				printf("\n%.2f fps\t", (double)frames / (double)(unprocessedTime_FPScount / 1000000000.0));
				printf("%.2f updates per second\t", (double)updates / (double)(unprocessedTime_FPScount / 1000000000.0));
				printf("%.2f inputs per second\n", (double)inputs / (double)(unprocessedTime_FPScount / 1000000000.0));
				frames = 0;
				updates = 0;
				inputs = 0;
				unprocessedTime_FPScount = 0;
			}
		}
	}