// static void LLFloaterWorldMap::onCommitSearchResult(LLUICtrl*, void* userdata) { LLFloaterWorldMap* self = (LLFloaterWorldMap*) userdata; LLCtrlListInterface *list = self->childGetListInterface("search_results"); if (!list) return; LLSD selected_value = list->getSelectedValue(); std::string sim_name = selected_value.asString(); if (sim_name.empty()) { return; } LLStringUtil::toLower(sim_name); std::map<U64, LLSimInfo*>::const_iterator it; for (it = LLWorldMap::getInstance()->mSimInfoMap.begin(); it != LLWorldMap::getInstance()->mSimInfoMap.end(); ++it) { LLSimInfo* info = (*it).second; std::string info_sim_name = info->mName; LLStringUtil::toLower(info_sim_name); if (sim_name == info_sim_name) { LLVector3d pos_global = from_region_handle( info->mHandle ); F64 local_x = self->childGetValue("spin x"); F64 local_y = self->childGetValue("spin y"); F64 local_z = self->childGetValue("spin z"); pos_global.mdV[VX] += local_x; pos_global.mdV[VY] += local_y; pos_global.mdV[VZ] = local_z; self->childSetValue("location", sim_name); self->trackLocation(pos_global); self->setDefaultBtn("Teleport"); break; } } onShowTargetBtn(self); }
// static void LLFloaterWorldMap::onLocationCommit( void* userdata ) { LLFloaterWorldMap *self = gFloaterWorldMap; if( !self || self->mIsClosing ) { return; } self->clearLocationSelection(FALSE); self->mCompletingRegionName = ""; self->mLastRegionName = ""; std::string str = self->childGetValue("location").asString(); // Trim any leading and trailing spaces in the search target std::string saved_str = str; LLStringUtil::trim( str ); if ( str != saved_str ) { // Set the value in the UI if any spaces were removed self->childSetValue("location", str); } LLStringUtil::toLower(str); gFloaterWorldMap->mCompletingRegionName = str; LLWorldMap::getInstance()->mIsTrackingCommit = TRUE; self->mExactMatch = FALSE; if (str.length() >= 3) { LLWorldMap::getInstance()->sendNamedRegionRequest(str); } else { str += "#"; LLWorldMap::getInstance()->sendNamedRegionRequest(str); } }