int	CMapObjectManager::getObjectsInView(MapObjectList& objects)
{
	Rect rect;
	m_pMap->getViewRect(rect);

	float x = 0;
	float y = 0;

	for ( MapObjectList::iterator itr = m_Objects.begin();itr != m_Objects.end();++itr)
	{
		MapObject* pObject = *itr;
		if ( pObject && !pObject->GetDeleted() )
		{
			x = pObject->getPositionX();
			y = pObject->getPositionY();

			if ( rect.containsPoint(Point(x,y)))
			{
				objects.push_back(pObject);
			}
		}
	}

	return (int)objects.size();
}
MapObject*	CMapObjectManager::SelectObject(float x,float y,MapObject* pExclude )
{
	MapObjectList objects;
	SelectObjects(x,y,objects);

	MapObject* pRet = NULL; 
	for ( size_t i = 0;i<objects.size();++i )
	{
		MapObject* pObject = objects[i];
		if ( pObject == pExclude || pObject->GetDeleted())
		{
			continue;
		}

		if ( !pRet )
		{
			pRet = pObject;
			continue;
		}

		if ( pRet->getZOrder() < pObject->getZOrder() )
		{
			pRet = pObject;
		}
	}

	return pRet;
}
Exemple #3
0
 void OctreeNode::intersect(const Rayf& ray, MapObjectList& objects) {
     if (m_bounds.contains(ray.origin) || !Math<float>::isnan(m_bounds.intersectWithRay(ray))) {
         objects.insert(objects.end(), m_objects.begin(), m_objects.end());
         for (unsigned int i = 0; i < 8; i++)
             if (m_children[i] != NULL)
                 m_children[i]->intersect(ray, objects);
     }
 }
int	CMapObjectManager::getObjects(int cx,int cy,MapObjectList& objects)
{
	objects.clear();
	for ( MapObjectList::iterator itr = m_Objects.begin();itr != m_Objects.end();++itr)
	{
		MapObject* pObject = *itr;
		if ( pObject  && !pObject->GetDeleted() && pObject->GetCellX() == cx && pObject->GetCellY() == cy )
		{
			objects.push_back(pObject);
		}
	}

	return (int)objects.size();
}
int	CMapObjectManager::SelectObjects(float x,float y,MapObjectList& objects)
{
	objects.clear();
	for ( MapObjectList::iterator itr = m_Objects.begin();itr != m_Objects.end();++itr)
	{
		MapObject* pObject = *itr;
		if ( pObject  && !pObject->GetDeleted() && pObject->CheckSelected(x,y) )
		{
			objects.push_back(pObject);
		}
	}

	return (int)objects.size();
}
Exemple #6
0
 void Octree::removeObjects(const MapObjectList& objects) {
     bool result;
     for (unsigned int i = 0; i < objects.size(); i++) {
         MapObject* object = objects[i];
         result = m_root->removeObject(*object);
         assert(result);
     }
 }