/** Finds which checklines must be visited before driving on this quad * (useful for rescue) */ void QuadGraph::computeChecklineRequirements(GraphNode* node, int latest_checkline) { for (unsigned int n=0; n<node->getNumberOfSuccessors(); n++) { const int succ_id = node->getSuccessor(n); // warp-around if (succ_id == 0) break; GraphNode* succ = m_all_nodes[succ_id]; int new_latest_checkline = CheckManager::get()->getChecklineTriggering(node->getCenter(), succ->getCenter() ); if(new_latest_checkline==-1) new_latest_checkline = latest_checkline; /* printf("Quad %i : checkline %i\n", succ_id, new_latest_checkline); printf("Quad %i :\n", succ_id); for (std::set<int>::iterator it = these_checklines.begin();it != these_checklines.end(); it++) { printf(" Depends on checkline %i\n", *it); } */ if (new_latest_checkline != -1) succ->setChecklineRequirements(new_latest_checkline); computeChecklineRequirements(succ, new_latest_checkline); } } // computeChecklineRequirements
/** Sets the checkline requirements for all nodes in the graph. */ void QuadGraph::computeChecklineRequirements() { computeChecklineRequirements(m_all_nodes[0], CheckManager::get()->getLapLineIndex()); } // computeChecklineRequirements
/** Sets the checkline requirements for all nodes in the graph. */ void DriveGraph::computeChecklineRequirements() { computeChecklineRequirements(getNode(0), CheckManager::get()->getLapLineIndex()); } // computeChecklineRequirements