From 5e799b1f81e5a71157da4f6396a0486f81b3bf74 Mon Sep 17 00:00:00 2001 From: Latif Khalifa Date: Wed, 23 Jan 2013 12:02:04 +0100 Subject: [PATCH] Respect always rez under owned land group setting for objects duplicated by shift-dragging or duplicating. Based on Phoenix changeset 5b50018c63d4 by Kadah --- indra/newview/llselectmgr.cpp | 38 ++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 85d42a6a0..8fbd83515 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -86,6 +86,9 @@ #include "pipeline.h" #include "llviewershadermgr.h" +#include "llparcel.h" +#include "llviewerparcelmgr.h" + #include "llglheaders.h" #include "hippogridmanager.h" @@ -3735,7 +3738,24 @@ 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(); + + // Apply always rez under owned land group setting for objects + // duplicated by shift-dragging or duplicating + if (gSavedSettings.getBOOL("AscentAlwaysRezInGroup")) + { + 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 ); @@ -4553,6 +4573,22 @@ void LLSelectMgr::packAgentAndSessionAndGroupID(void* user_data) void LLSelectMgr::packDuplicateHeader(void* data) { LLUUID group_id(gAgent.getGroupID()); + + // Apply always rez under owned land group setting for objects + // duplicated by shift-dragging or duplicating + if (gSavedSettings.getBOOL("AscentAlwaysRezInGroup")) + { + 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;