void LLFloaterWorldMap::trackURL(const std::string& region_name, S32 x_coord, S32 y_coord, S32 z_coord) { LLSimInfo* sim_info = LLWorldMap::getInstance()->simInfoFromName(region_name); z_coord = llclamp(z_coord, 0, 4096); if (sim_info) { LLVector3 local_pos; local_pos.mV[VX] = (F32)x_coord; local_pos.mV[VY] = (F32)y_coord; local_pos.mV[VZ] = (F32)z_coord; LLVector3d global_pos = sim_info->getGlobalPos(local_pos); trackLocation(global_pos); setDefaultBtn("Teleport"); } else { // fill in UI based on URL gFloaterWorldMap->getChild<LLUICtrl>("location")->setValue(region_name); // Save local coords to highlight position after region global // position is returned. gFloaterWorldMap->mCompletingRegionPos.set( (F32)x_coord, (F32)y_coord, (F32)z_coord); // pass sim name to combo box gFloaterWorldMap->mCompletingRegionName = region_name; LLWorldMapMessage::getInstance()->sendNamedRegionRequest(region_name); LLStringUtil::toLower(gFloaterWorldMap->mCompletingRegionName); LLWorldMap::getInstance()->setTrackingCommit(); } }
void LLFloaterWorldMap::trackURL(const std::string& region_name, S32 x_coord, S32 y_coord, S32 z_coord) { LLSimInfo* sim_info = LLWorldMap::getInstance()->simInfoFromName(region_name); z_coord = llclamp(z_coord, 0, 4096); if (sim_info) { LLVector3 local_pos; local_pos.mV[VX] = (F32)x_coord; local_pos.mV[VY] = (F32)y_coord; local_pos.mV[VZ] = (F32)z_coord; LLVector3d global_pos = sim_info->getGlobalPos(local_pos); trackLocation(global_pos); setDefaultBtn("Teleport"); } else { // fill in UI based on URL gFloaterWorldMap->childSetValue("location", region_name); childSetValue("spin x", LLSD((F32)x_coord)); childSetValue("spin y", LLSD((F32)y_coord)); childSetValue("spin z", LLSD((F32)z_coord)); // pass sim name to combo box gFloaterWorldMap->mCompletingRegionName = region_name; LLWorldMapMessage::getInstance()->sendNamedRegionRequest(region_name); LLStringUtil::toLower(gFloaterWorldMap->mCompletingRegionName); LLWorldMap::getInstance()->setTrackingCommit(); } }
void LLFloaterWorldMap::onCommitSearchResult() { LLCtrlListInterface *list = 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()->getRegionMap().begin(); it != LLWorldMap::getInstance()->getRegionMap().end(); ++it) { LLSimInfo* info = it->second; if (info->isName(sim_name)) { LLVector3d pos_global = info->getGlobalOrigin(); const F64 SIM_COORD_DEFAULT = 128.0; LLVector3 pos_local(SIM_COORD_DEFAULT, SIM_COORD_DEFAULT, 0.0f); // Did this value come from a trackURL() request? if (!mCompletingRegionPos.isExactlyZero()) { pos_local = mCompletingRegionPos; mCompletingRegionPos.clear(); } pos_global.mdV[VX] += (F64)pos_local.mV[VX]; pos_global.mdV[VY] += (F64)pos_local.mV[VY]; pos_global.mdV[VZ] = (F64)pos_local.mV[VZ]; childSetValue("location", sim_name); trackLocation(pos_global); setDefaultBtn("Teleport"); break; } } onShowTargetBtn(); }
TrackSegment PatchFactory::getTrackByType(Patch::PatchType type, float rotation) const { assert(type < Patch::PATCH_COUNT); cv::Size trackSize; //Get base patch to receive the size of the patch Patch::ConstPtr basePatch = PatchFactory::getFactory()->getPatchByType(type, 0); trackSize = basePatch->getSize(); //trackLocation is initial not used, users must translate is by themselve. ManagedPose trackLocation(0,0,0,ManagedPose::Context::IN_PIXEL); //get start and endJunction to build managedPose. cv::Point startJunction = PatchFactory::getFactory()->getBaseStartJunctionByType(type); cv::Point endJunction = PatchFactory::getFactory()->getBaseEndJunctionByType(type); ManagedPose managedStartJunction(startJunction.x, startJunction.y, rotation, ManagedPose::Context::IN_PIXEL); ManagedPose managedEndJunction(endJunction.x, endJunction.y, basePatch->getDeltaOrientation(), ManagedPose::Context::IN_PIXEL); managedEndJunction = managedEndJunction.rotate(managedStartJunction); //build basetrack TrackSegment baseTrack(type, managedStartJunction, managedEndJunction, trackLocation, trackSize, 0); return baseTrack; }