/* dont check target time, if *targetTime==NULL */ void ntlWorld::singleStepSims(double targetTime) { const bool debugTime = false; //double targetTime = mSimulationTime + (*mpSims)[mFirstSim]->getTimestep(); if(debugTime) errMsg("ntlWorld::singleStepSims","Target time: "<<targetTime); for(size_t i=0;i<mpSims->size();i++) { SimulationObject *sim = (*mpSims)[i]; if(!sim->getVisible()) continue; if(sim->getPanic()) continue; bool done = false; while(!done) { // try to prevent round off errs if(debugTime) errMsg("ntlWorld::singleStepSims","Test sim "<<i<<" curt:"<< sim->getCurrentTime()<<" target:"<<targetTime<<" delta:"<<(targetTime - sim->getCurrentTime())<<" stept:"<<sim->getTimestep()<<" leps:"<<LBM_TIME_EPSILON ); // timedebug if( (targetTime - sim->getCurrentTime()) > LBM_TIME_EPSILON) { if(debugTime) errMsg("ntlWorld::singleStepSims","Stepping sim "<<i<<" t:"<< sim->getCurrentTime()); // timedebug sim->step(); } else { done = true; } } } mSimulationTime = (*mpSims)[mFirstSim]->getCurrentTime(); #ifndef NOGUI if(mpOpenGLRenderer) mpOpenGLRenderer->notifyOfNextStep(mSimulationTime); #endif // NOGUI }