void Simulation::cycle() { //if ((mSimulationTime % 1000) == 0) Gridbrain::debugMutationsCount(); bool draw = mDrawGraphics && mDrawThisCycle; list<SimObj*>::iterator iterObj; for (iterObj = mObjectsToKill.begin(); iterObj != mObjectsToKill.end(); iterObj++) { mPopulationDynamics->onOrganismDeath(*iterObj); } mObjectsToKill.clear(); if (draw) { drawBeforeObjects(); } onCycle(); for (iterObj = mObjects.begin(); iterObj != mObjects.end(); ++iterObj) { SimObj* obj = *iterObj; obj->process(); } for (iterObj = mObjects.begin(); iterObj != mObjects.end(); ++iterObj) { SimObj* obj = *iterObj; if (obj->mType == SimObj::TYPE_AGENT) { obj->perceive(); obj->emptyMessageList(); obj->compute(); obj->act(); } if (draw) { obj->draw(); } } if (draw) { drawAfterObjects(); } mPopulationDynamics->onCycle(mSimulationTime, art_getTime()); mSimulationTime++; }