void SampleHTNActorController::onUpdate(float dt){ updateWorldState(dt); std::vector<HTN::pTask> plan = m_planner->getPlan(getAI()->getHtnMethodsPath(),getAI()->getHtnOperatorsPath(),getAI()->getHtnGoalsPath()); HTN::pOperator newTask; HTN::PlanResult result = m_planner->resolvePlan(plan, dt, newTask); switch (result) { case HTN::PLAN_EMPTYPLAN: getAI()->setSpeed(0.f); break; case HTN::PLAN_INTERRUPTED: getAI()->stopSmoothChangeDir(); getAI()->stopAnimation(); case HTN::PLAN_NEW: executeTask(newTask); break; case HTN::PLAN_RUNNING: break; } }
void Task::run() { emitStarted(); executeTask(); emitEnded(); }
void Task::start() { m_running = true; emit started(); executeTask(); }
void MPIWorkerMaster::run() { Profiler::getInstance().setEnabled(true); CriticalDegree degree; //FlightDataReader reader("c:\\basic1.txt"); FlightDataReader reader("c:\\basic2.txt"); //FlightDataReader reader("c:\\big1.txt"); //FlightDataReader reader("c:\\big2.txt"); echo(MakeString() << "Load data... (" << reader.getFileName() << ")"); reader.open(); reader.readHeader(); Profiler::getInstance().start("1. Read flights data"); // 1. Read flights data std::vector<Flight> flights = reader.readFlights(); Profiler::getInstance().finish(); ProjectInfo projectInfo = reader.getProjectInfo(); echo(MakeString() << "Project info: " << projectInfo.dump().str()); //Init available slaves (if any) with project info (mSlaveQueue) initSlaves(projectInfo); // 2. Build flight paths // OpenMP splitted by number of flights () buildFlightsPathsParallel(projectInfo, flights); // Calculate total number of project spaces to be processed int numOfTasks = calcNumberOfTasks(projectInfo); echo(MakeString() << "Max number of threads: " << omp_get_max_threads()); echo(MakeString() << "Total number of tasks: " << numOfTasks); echo("Processing..."); int progress = 1; Profiler::getInstance().start("Process project spaces"); ProjectSpaceBuilder builder(projectInfo, flights); // 3. Calculate Critical Degree while(builder.nextTime()) { ProjectSpace projectSpace = builder.build(); // LB - Have free workers send more tasks if (mSlaveQueue.size() > 0) { sendTask(projectSpace); } else { CriticalLevel level = executeTask(projectSpace); degree.addCriticalLevel(level); } collectSlaveResults(degree); if (progress % 10000 == 0) { echo (MakeString() << " Progress: " << progress); } progress++; } Profiler::getInstance().finish(); echo("Collect results from still running slaves."); while(mSlaveRunningTasks > 0) { collectSlaveResults(degree); } sendSlavesFinishSignal(); printResult(degree); }
void TaskExecutionContext::executeTasks(std::vector<ITask*> tasks) { for (std::vector<ITask*>::const_iterator I = tasks.begin(); I != tasks.end(); ++I) { executeTask(*I); } }