Esempio n. 1
0
void Application::Run()
{
	scene = new MinScene;
	scene->Init();
	ResetCursorPos();

	m_timer.startTimer();    // Start timer to calculate how long it takes to render this frame
	while (!glfwWindowShouldClose(m_window) && !Close)
	{
		getKeyboardUpdate();
		scene->Update(m_timer.getElapsedTime());
		scene->Render();
		
		//Swap buffers
		glfwSwapBuffers(m_window);
		//Get and organize events, like keyboard and mouse input, window resizing, etc...
		glfwPollEvents();
        //m_timer.waitUntil(frameTime);       // Frame rate limiter. Limits each frame to a specified time in ms.  
	}

	scene->Exit();
	delete scene;
}
Esempio n. 2
0
void Controller::Run()
{
	//Main Loop
	m_timer.startTimer();    // Start timer to calculate how long it takes to render this frame

	
	while (!glfwWindowShouldClose(view->getWindow()) && !IsKeyPressed(VK_ESCAPE))
	{
		//get the elapsed time
		m_dElapsedTime = m_timer.getElapsedTime();
		m_dAccumulatedTime_thread1 += m_dElapsedTime;
		m_dAccumulatedTime_thread2 += m_dElapsedTime;

		/* fps */
		fps = (float)(1.f / m_dElapsedTime);
		
		/* twin threaded approach */
		if(m_dAccumulatedTime_thread1 > 0.01)	//update: update fps is _dAccumulatedTime_thread1 > fps
		{
			/** controller update **/
			GetMouseUpdate();
			getKeyboardUpdate();

			/** model update **/
			if (stateManager->GetState() == StateManager::GAME)
			{
				modelList[Model::getCurrentModel()]->Update(m_dElapsedTime, myKeys, GetMousePos(), stateManager->GetState());
			}
			else if (stateManager->GetState() == StateManager::TRANSITION)
			{
				stateManager->UpdateTransitionTime(m_dElapsedTime);
				modelList[Model::getCurrentModel()]->Update(m_dElapsedTime, myKeys, GetMousePos(), stateManager->GetState());
			}
			else
			{
				modelScreen->Update(m_dElapsedTime, myKeys, GetMousePos(), stateManager->GetState());
			}
			modelTransitioning();

			m_dAccumulatedTime_thread1 = 0.0;
		}
		if(m_dAccumulatedTime_thread2 > 0.003)	//render: render fps is _dAccumulatedTime_thread1 > fps
		{
			/** View update(rendering) **/
			view->Render(fps);	//or switch to pause screen

			m_dAccumulatedTime_thread2 = 0.0;
		}

		if(myKeys[KEY_LMOUSE] || myKeys[KEY_RMOUSE])
			UpdateMouseClick();
		
		//Swap buffers
		glfwSwapBuffers(view->getWindow());
		//Get and organize events, like keyboard and mouse input, window resizing, etc...
		glfwPollEvents();
		m_timer.waitUntil(frameTime);       // Frame rate limiter. Limits each frame to a specified time in ms.   

	} //Check if the ESC key had been pressed or if the window had been closed
	
	view->Exit();
	for(int i = 0; i < Model::getModelCount(); ++i)
	{
		//model[i].Exit();
	}
}