Esempio n. 1
0
 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)));
     }
   }
 }
Esempio n. 2
0
 void startNewSearch(RNode* root, const Vector2D& point)
 {
   queue = PriorityQueue();
   has_found_neighbour = false;
   query_point = point;
   queue.push(QueueElement(root, 0.0f));
 }
Esempio n. 3
0
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();
}
Esempio n. 6
0
 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)));
 }