/*static*/ void LLURLDispatcherImpl::regionNameCallback(U64 region_handle, const LLSLURL& slurl, const LLUUID& snapshot_id, bool teleport) { if(slurl.getType() == LLSLURL::LOCATION) { regionHandleCallback(region_handle, slurl, snapshot_id, teleport); } }
/*static*/ void LLURLDispatcherImpl::regionNameCallback(U64 region_handle, const std::string& url, const LLUUID& snapshot_id, bool teleport) { std::string sim_string = stripProtocol(url); std::string region_name; S32 x = 128; S32 y = 128; S32 z = 0; LLURLSimString::parse(sim_string, ®ion_name, &x, &y, &z); LLVector3 local_pos; local_pos.mV[VX] = (F32)x; local_pos.mV[VY] = (F32)y; local_pos.mV[VZ] = (F32)z; // determine whether the point is in this region if ((x >= 0) && (x < REGION_WIDTH_UNITS) && (y >= 0) && (y < REGION_WIDTH_UNITS)) { // if so, we're done regionHandleCallback(region_handle, url, snapshot_id, teleport); } else { // otherwise find the new region from the location // add the position to get the new region LLVector3d global_pos = from_region_handle(region_handle) + LLVector3d(local_pos); U64 new_region_handle = to_region_handle(global_pos); LLWorldMap::getInstance()->sendHandleRegionRequest(new_region_handle, LLURLDispatcherImpl::regionHandleCallback, url, teleport); } }