void update() { //rough fps handling frame++; t4 = std::chrono::high_resolution_clock::now(); int ret = std::chrono::duration_cast< std::chrono::duration<float> >(t4-t3).count(); if(ret >= 1) { simConfig.lastFPS = frame; frame = 0; t3 = std::chrono::high_resolution_clock::now(); } if(frame % 3 == 0 || frame != 0) { //time passed gets calculated float dt = getDT() * timeRate; //if we just exited a pause, just make the dt zero so no jerking when unpausing if(recentlyPaused) { dt = 0; recentlyPaused = false; } simEntities.tick(dt); simConfig.tick(dt); } // Update the state of the scene glutPostRedisplay();//call the display callback }
void update() { float dt = getDT() * simConfig.timeRate; //rough fps handling frame++; t4 = std::chrono::high_resolution_clock::now(); int ret = std::chrono::duration_cast< std::chrono::duration<float> >(t4-t3).count(); //if we're paused, throw out dt if(recentlyPaused) dt = 0; //tick the entity manager simEntities.tick(dt); if(ret >= 1) { simConfig.lastFPS = frame; frame = 0; t3 = std::chrono::high_resolution_clock::now(); //TICK THAT SEXY RENDERER SO IT REBUILDS THE DYNAMIC INTERFACE simRenderer.tick(); } simConfig.tick(dt); //perform spam key options here keyboard(); //lower the key spam counts double rate = 0.05; if(consecutivePresses[0]>0) consecutivePresses[0]-=rate; if(consecutivePresses[1]>0) consecutivePresses[1]-=rate; if(consecutivePresses[2]>0) consecutivePresses[2]-=rate; if(consecutivePresses[3]>0) consecutivePresses[3]-=rate; if(consecutivePresses[4]>0) consecutivePresses[4]-=rate; if(consecutivePresses[5]>0) consecutivePresses[5]-=rate; if(consecutivePresses[6]>0) consecutivePresses[6]-=rate; if(consecutivePresses[7]>0) consecutivePresses[7]-=rate; //cap how fast it may get double cap = 0.1; if(consecutivePresses[0]>cap) consecutivePresses[0]=cap; if(consecutivePresses[1]>cap) consecutivePresses[1]=cap; if(consecutivePresses[2]>cap) consecutivePresses[2]=cap; if(consecutivePresses[3]>cap) consecutivePresses[3]=cap; if(consecutivePresses[4]>cap) consecutivePresses[4]=cap; if(consecutivePresses[5]>cap) consecutivePresses[5]=cap; if(consecutivePresses[6]>cap) consecutivePresses[6]=cap; if(consecutivePresses[7]>cap) consecutivePresses[7]=cap; // Update the state of the scene glutPostRedisplay();//call the display callback }