void OrderedTask::update_start_transition(const AircraftState &state, OrderedTaskPoint& start) { if (active_task_point == 0) { // find boundary point that produces shortest // distance from state to that point to next tp point taskpoint_start->find_best_start(state, *task_points[1], task_projection); } else if (!start.HasExited() && !start.IsInSector(state)) { start.Reset(); // reset on invalid transition to outside // point to nominal start point } // @todo: modify this for optional start? }
static bool IsTaskLegVisible(const OrderedTaskPoint &tp) { switch (tp.GetType()) { case TaskPointType::START: return tp.HasExited(); case TaskPointType::FINISH: case TaskPointType::AAT: case TaskPointType::AST: return tp.HasEntered(); case TaskPointType::UNORDERED: break; } gcc_unreachable(); }