From 17e39d3fd9ef508a51d169ab73ae64c09cc98fac Mon Sep 17 00:00:00 2001 From: Ansariel Date: Mon, 1 Jun 2020 16:55:06 +0200 Subject: [PATCH] FIRE-29642: Show 0m as distance for HUD attachments in area search --- indra/newview/fsareasearch.cpp | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/indra/newview/fsareasearch.cpp b/indra/newview/fsareasearch.cpp index 1a7e65633f..065ced1660 100644 --- a/indra/newview/fsareasearch.cpp +++ b/indra/newview/fsareasearch.cpp @@ -81,6 +81,18 @@ const F32 MIN_DISTANCE_MOVED = 1.0f; const F32 REQUEST_TIMEOUT = 30.0f; +F32 calculateObjectDistance(LLVector3d agent_pos, LLViewerObject* object) +{ + if (object->isHUDAttachment()) + { + return 0.f; + } + else + { + return dist_vec(agent_pos, object->getPositionGlobal()); + } +} + class FSAreaSearch::FSParcelChangeObserver : public LLParcelObserver { public: @@ -624,8 +636,8 @@ void FSAreaSearch::requestObjectProperties(const std::vector& request_list, msg->newMessageFast(_PREHASH_ObjectDeselect); } msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->addUUIDFast(_PREHASH_AgentID, gAgentID); + msg->addUUIDFast(_PREHASH_SessionID, gAgentSessionID); select_count++; start_new_message = false; } @@ -777,7 +789,7 @@ void FSAreaSearch::matchObject(FSObjectProperties& details, LLViewerObject* obje if (mFilterDistance) { - S32 distance = dist_vec(mPanelList->getAgentLastPosition(), objectp->getPositionGlobal());// used mAgentLastPosition instead of gAgent->getPositionGlobal for performace + S32 distance = (S32)calculateObjectDistance(mPanelList->getAgentLastPosition(), objectp);// used mAgentLastPosition instead of gAgent->getPositionGlobal for performace if (!(distance >= mFilterDistanceMin && distance <= mFilterDistanceMax)) { return; @@ -989,7 +1001,7 @@ void FSAreaSearch::matchObject(FSObjectProperties& details, LLViewerObject* obje row_params.value = object_id.asString(); cell_params.column = "distance"; - cell_params.value = llformat("%1.0f m", dist_vec(mPanelList->getAgentLastPosition(), objectp->getPositionGlobal())); // used mAgentLastPosition instead of gAgent->getPositionGlobal for performace + cell_params.value = llformat("%1.0f m", calculateObjectDistance(mPanelList->getAgentLastPosition(), objectp)); // used mAgentLastPosition instead of gAgent->getPositionGlobal for performace row_params.columns.add(cell_params); cell_params.column = "name"; @@ -1471,7 +1483,7 @@ void FSPanelAreaSearchList::updateScrollList() { if (agent_moved && distance_column) { - item->getColumn(distance_column->mIndex)->setValue(LLSD(llformat("%1.0f m", dist_vec(current_agent_position, objectp->getPositionGlobal())))); + item->getColumn(distance_column->mIndex)->setValue(LLSD(llformat("%1.0f m", calculateObjectDistance(current_agent_position, objectp)))); } } } @@ -1614,7 +1626,7 @@ bool FSPanelAreaSearchList::onContextMenuItemEnable(const LLSD& userdata) { LLUUID object_id = mResultList->getFirstSelected()->getUUID(); LLViewerObject* objectp = gObjectList.findObject(object_id); - return (objectp && dist_vec_squared(gAgent.getPositionGlobal(), objectp->getPositionGlobal()) < gAgentCamera.mDrawDistance * gAgentCamera.mDrawDistance); + return (objectp && calculateObjectDistance(gAgent.getPositionGlobal(), objectp) < gAgentCamera.mDrawDistance); } else { @@ -1978,8 +1990,8 @@ void FSPanelAreaSearchList::sitOnObject(FSObjectProperties& details, LLViewerObj { gMessageSystem->newMessageFast(_PREHASH_AgentRequestSit); gMessageSystem->nextBlockFast(_PREHASH_AgentData); - gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgentID); + gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgentSessionID); gMessageSystem->nextBlockFast(_PREHASH_TargetObject); gMessageSystem->addUUIDFast(_PREHASH_TargetID, objectp->mID); gMessageSystem->addVector3Fast(_PREHASH_Offset, LLVector3::zero);