Beispiel #1
0
void OgrWriter::writeElement(ElementPtr &element, bool debug)
{
  //Unfortunately, this check also has to happen in addition to checking hasMoreElements.  See
  //explanation in ServicesDbReader::readNextElement.
  if (element.get())
  {
    Tags sourceTags = element->getTags();
    Tags destTags;
    for (Tags::const_iterator it = element->getTags().begin();
         it != element->getTags().end(); ++it)
    {
      if (sourceTags[it.key()] != "")
      {
        destTags.appendValue(it.key(), it.value());
      }
    }
    // Now that all the empties are gone, update our element
    element->setTags(destTags);

    if ( debug == true )
    {
      LOG_DEBUG(element->toString());
    }

    PartialOsmMapWriter::writePartial(element);
  }
}
Beispiel #2
0
 bool XULParser::createElement(const std::string & inLocalName,
                               Element * inParent,
                               const AttributesMapping & inAttributes,
                               ElementPtr & outElement)
 {
     outElement = ElementFactory::Instance().createElement(inLocalName, inParent, inAttributes);
     return outElement.get() != 0;
 }
Beispiel #3
0
void Gamefield::addElement(ElementPtr const& elem) {
	{
		lock_guard<mutex> _lock(mMutexElements);
		mQuadTree->add(elem.get());
		mElements.push_back(elem);
	}
	{
		lock_guard<mutex> _lock(mMutexNewElements);
		mNewElements.push_back(elem);
	}
}
Beispiel #4
0
 void XULParser::pushStack(ElementPtr inElement)
 {
     if (inElement)
     {
         if (mStack.empty())
         {
             assert(!mRootElement);
             mRootElement = inElement;
         }
         mStack.push(inElement.get());
     }
 }
Beispiel #5
0
void Gamefield::_destroyElement(ElementPtr const&  elem) {
	//Remove Element from QuadTree
	if(elem->getRegion()) {
		if (!elem->getRegion()->remove(elem.get())) {
			fprintf(stderr, "Elem is not inside its own Region %d %p\n", elem->getId(), elem.get());
			if (!mQuadTree->remove(elem.get()))
				fprintf(stderr, "Remove from QuadTree failed for %d %p\n", elem->getId(), elem.get());
		}
	} else
	if(!mQuadTree->remove(elem.get()))
		fprintf(stderr, "Remove2 from QuadTree failed for %d %p\n", elem->getId(), elem.get());
	elem->setRegion(NULL);

	lock_guard<mutex> _lock(mMutexElements);

	//Find element
	auto it = mElements.begin();
	while (it != mElements.end()) {
		if ((*it)->getId() == elem->getId())
			break;
		it++;
	}
	if (it != mElements.end()) {
		//Swap with last element then pop last (no realocation needed)
		(*it) = mElements.back();
		mElements.pop_back();
	}
}
XTOOLS_NAMESPACE_BEGIN

LongElementPtr LongElement::Cast(const ElementPtr& element)
{
	if (element != NULL && element->GetElementType() == ElementType::Int64Type)
	{
		return static_cast<LongElement*>(element.get());
	}
	else
	{
		return NULL;
	}
}
Beispiel #7
0
void Gamefield::destroyElement(ElementPtr const&  elem) {
	if(elem->isDeleted()) {
		fprintf(stderr, "Dubble destory of element!!!!!! %d %p\n", elem->getId(), elem.get());
		assert(false);
		return;
	}
	//printf("Maring as Deleted %d %p\n", elem->getId(), elem.get());
	elem->markDeleted();
	{
		lock_guard<mutex> _lock(mMutexDeletedElements);
		mDeletedElements.push_back(elem);
	}

	if (elem->getType() == ET_Ball) {
		auto ball = std::dynamic_pointer_cast<Ball>(elem);
		ball->getPlayer()->removeBall(ball->getId());
	}
	if (elem->getType() == ET_Food)
		mFoodCounter--;
	else if (elem->getType() == ET_Obstracle)
		mObstracleCounter--;
	else if (elem->getType() == ET_Item)
		mItemCounter--;
}