From 39c06ef174f3778e99c5843daa8b01cd34202994 Mon Sep 17 00:00:00 2001 From: McCabe Maxsted Date: Sat, 2 Oct 2010 16:34:16 -0700 Subject: Fixed RezWithLandGroup not working when shift-dragging prims (from Henri Beauchamp and the Cool Viewer) --- linden/indra/newview/llselectmgr.cpp | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/llselectmgr.cpp b/linden/indra/newview/llselectmgr.cpp index 83abcf4..1634950 100644 --- a/linden/indra/newview/llselectmgr.cpp +++ b/linden/indra/newview/llselectmgr.cpp @@ -64,6 +64,7 @@ #include "llinventorymodel.h" #include "llmenugl.h" #include "llmutelist.h" +#include "llparcel.h" // RezWithLandGroup #include "llstatusbar.h" #include "llsurface.h" #include "lltool.h" @@ -77,6 +78,7 @@ #include "llviewermenu.h" #include "llviewerobject.h" #include "llviewerobjectlist.h" +#include "llviewerparcelmgr.h" // RezWithLandGroup #include "llviewerregion.h" #include "llviewerstats.h" #include "llvoavatar.h" @@ -3135,7 +3137,20 @@ void LLSelectMgr::packDuplicateOnRayHead(void *user_data) msg->nextBlockFast(_PREHASH_AgentData); msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() ); - msg->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID() ); + LLUUID group_id = gAgent.getGroupID(); + if (gSavedSettings.getBOOL("RezWithLandGroup")) + { + LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); + if (gAgent.isInGroup(parcel->getGroupID())) + { + group_id = parcel->getGroupID(); + } + else if (gAgent.isInGroup(parcel->getOwnerID())) + { + group_id = parcel->getOwnerID(); + } + } + msg->addUUIDFast(_PREHASH_GroupID, group_id); msg->addVector3Fast(_PREHASH_RayStart, data->mRayStartRegion ); msg->addVector3Fast(_PREHASH_RayEnd, data->mRayEndRegion ); msg->addBOOLFast(_PREHASH_BypassRaycast, data->mBypassRaycast ); @@ -3907,6 +3922,18 @@ void LLSelectMgr::packAgentAndSessionAndGroupID(void* user_data) void LLSelectMgr::packDuplicateHeader(void* data) { LLUUID group_id(gAgent.getGroupID()); + if (gSavedSettings.getBOOL("RezWithLandGroup")) + { + LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); + if (gAgent.isInGroup(parcel->getGroupID())) + { + group_id = parcel->getGroupID(); + } + else if (gAgent.isInGroup(parcel->getOwnerID())) + { + group_id = parcel->getOwnerID(); + } + } packAgentAndSessionAndGroupID(&group_id); LLDuplicateData* dup_data = (LLDuplicateData*) data; -- cgit v1.1