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; }
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(); }
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); } }