LLViewerRegion *LLPathfindingNavMeshZone::NavMeshLocation::getRegion() const { LLViewerRegion *region = NULL; LLViewerRegion *currentRegion = gAgent.getRegion(); if (currentRegion != NULL) { if (mDirection == CENTER_REGION) { region = currentRegion; } else { //User wants to pull in a neighboring region std::vector<S32> availableRegions; currentRegion->getNeighboringRegionsStatus( availableRegions ); //Is the desired region in the available list std::vector<S32>::iterator foundElem = std::find(availableRegions.begin(),availableRegions.end(),mDirection); if ( foundElem != availableRegions.end() ) { std::vector<LLViewerRegion*> neighborRegionsPtrs; currentRegion->getNeighboringRegions( neighborRegionsPtrs ); region = neighborRegionsPtrs[foundElem - availableRegions.begin()]; } } } return region; }