void findNextNeighbour() { has_found_neighbour = false; while (!queue.empty()) { RNode* top_node = queue.top().node; Rectangle bb = top_node->boundingBox(); queue.pop(); RTreeLeaf* leaf = dynamic_cast< RTreeLeaf* >(top_node); if (leaf != NULL) { has_found_neighbour = true; found_neighbour = leaf->point; Vector2D diff = leaf->point - query_point; return; } RTreeNode* node = dynamic_cast< RTreeNode* >(top_node); std::list< RNode* >::iterator ci; for (ci = node->children.begin(); ci != node->children.end(); ++ci) { RNode* child = *ci; queue.push(QueueElement(child, Distance()(child->boundingBox(), query_point))); } } }
void startNewSearch(RNode* root, const Vector2D& point) { queue = PriorityQueue(); has_found_neighbour = false; query_point = point; queue.push(QueueElement(root, 0.0f)); }
void AIEngine::add(AIStateMachine* state_machine) { Dout(dc::statemachine(state_machine->mSMDebug), "Adding state machine [" << (void*)state_machine << "] to " << mName); engine_state_type_wat engine_state_w(mEngineState); engine_state_w->list.push_back(QueueElement(state_machine)); if (engine_state_w->waiting) { engine_state_w.signal(); } }
//static void AIStateMachine::add_continued_statemachines(AIReadAccess<csme_type>& csme_r) { bool nonempty = false; for (continued_statemachines_type::const_iterator iter = csme_r->continued_statemachines.begin(); iter != csme_r->continued_statemachines.end(); ++iter) { nonempty = true; active_statemachines.push_back(QueueElement(*iter)); Dout(dc::statemachine, "Adding " << (void*)*iter << " to active_statemachines"); (*iter)->mActive = as_active; } if (nonempty) AIWriteAccess<csme_type>(csme_r)->continued_statemachines.clear(); }
void main() { cout<<"Test class"<<endl; QueueWithPriority queue; QueueElement qe("element1", LOW); queue.putElement(qe); queue.putElement(QueueElement("element2", NORMAL)); queue.putElement("element3", NORMAL); queue.putElement("element4", HIGH); queue.putElement("element5", HIGH); queue.putElement("element6", NORMAL); queue.putElement("element7", HIGH); queue.putElement("element8", LOW); queue.print_queue(); cout<<endl<<"First element:"<<endl<<queue.getElement()<<endl; getch(); }
const bool DataEvent::__notify(const EventType &eventType) noexcept { assert(m_queue != nullptr); this->__pushDispatch(); return m_queue->__enqueue(QueueElement(this, std::bind(&DataEvent::dispatch, this, this, eventType))); }