diff options
author | elektrahesse | 2010-10-03 10:06:37 +0200 |
---|---|---|
committer | elektrahesse | 2010-10-03 10:06:37 +0200 |
commit | 00abcf5bb6e945632a5450663d7e55e1c63a466a (patch) | |
tree | cc78ba902f3f95192855eaa4eacb63879a3becb0 /linden | |
parent | Changed version to Experimental 2010.10.02 (diff) | |
download | meta-impy-00abcf5bb6e945632a5450663d7e55e1c63a466a.zip meta-impy-00abcf5bb6e945632a5450663d7e55e1c63a466a.tar.gz meta-impy-00abcf5bb6e945632a5450663d7e55e1c63a466a.tar.bz2 meta-impy-00abcf5bb6e945632a5450663d7e55e1c63a466a.tar.xz |
Patch to enable building on any parcel if the agent has create powers in the land group. If the land is deeded the object is created with the agent active group, else it's set to the land group by default. Also enables the build button when it should.
Diffstat (limited to '')
-rw-r--r-- | linden/indra/newview/lltoolplacer.cpp | 13 | ||||
-rw-r--r-- | linden/indra/newview/llviewerparcelmgr.cpp | 22 |
2 files changed, 24 insertions, 11 deletions
diff --git a/linden/indra/newview/lltoolplacer.cpp b/linden/indra/newview/lltoolplacer.cpp index d5c4de1..00b0c9f 100644 --- a/linden/indra/newview/lltoolplacer.cpp +++ b/linden/indra/newview/lltoolplacer.cpp | |||
@@ -67,6 +67,7 @@ | |||
67 | 67 | ||
68 | #include "llparcel.h" // RezWithLandGroup | 68 | #include "llparcel.h" // RezWithLandGroup |
69 | #include "llviewerparcelmgr.h" // RezWithLandGroup | 69 | #include "llviewerparcelmgr.h" // RezWithLandGroup |
70 | #include "roles_constants.h" // Ele: Land Group Override | ||
70 | 71 | ||
71 | const LLVector3 DEFAULT_OBJECT_SCALE(0.5f, 0.5f, 0.5f); | 72 | const LLVector3 DEFAULT_OBJECT_SCALE(0.5f, 0.5f, 0.5f); |
72 | 73 | ||
@@ -264,9 +265,11 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics ) | |||
264 | gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); | 265 | gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); |
265 | // RezWithLandGroup 2009-05, If avatar is in land group/land owner group, | 266 | // RezWithLandGroup 2009-05, If avatar is in land group/land owner group, |
266 | // it rezzes it with it to prevent autoreturn/whatever | 267 | // it rezzes it with it to prevent autoreturn/whatever |
267 | if ( gSavedSettings.getBOOL("RezWithLandGroup") ) | 268 | |
269 | // Ele: if agent is in land group and has create powers but the tag is not active, force it to enable build seamlessly | ||
270 | LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); | ||
271 | if ( gSavedSettings.getBOOL("RezWithLandGroup")) | ||
268 | { | 272 | { |
269 | LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); | ||
270 | if ( gAgent.isInGroup(parcel->getGroupID()) ) | 273 | if ( gAgent.isInGroup(parcel->getGroupID()) ) |
271 | { | 274 | { |
272 | gMessageSystem->addUUIDFast(_PREHASH_GroupID, parcel->getGroupID()); | 275 | gMessageSystem->addUUIDFast(_PREHASH_GroupID, parcel->getGroupID()); |
@@ -280,7 +283,11 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics ) | |||
280 | gMessageSystem->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID()); | 283 | gMessageSystem->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID()); |
281 | } | 284 | } |
282 | } | 285 | } |
283 | else | 286 | else if (gAgent.hasPowerInGroup(parcel->getGroupID(), GP_LAND_ALLOW_CREATE) && !parcel->getIsGroupOwned()) |
287 | { | ||
288 | gMessageSystem->addUUIDFast(_PREHASH_GroupID, parcel->getGroupID()); | ||
289 | } | ||
290 | else | ||
284 | { | 291 | { |
285 | gMessageSystem->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID()); | 292 | gMessageSystem->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID()); |
286 | } | 293 | } |
diff --git a/linden/indra/newview/llviewerparcelmgr.cpp b/linden/indra/newview/llviewerparcelmgr.cpp index 61b91fe..257ce0d 100644 --- a/linden/indra/newview/llviewerparcelmgr.cpp +++ b/linden/indra/newview/llviewerparcelmgr.cpp | |||
@@ -651,15 +651,21 @@ BOOL LLViewerParcelMgr::agentCanBuild() const | |||
651 | { | 651 | { |
652 | if (mAgentParcel) | 652 | if (mAgentParcel) |
653 | { | 653 | { |
654 | return (gAgent.isGodlike() | 654 | const LLUUID parcel_group = mAgentParcel->getGroupID(); |
655 | || (mAgentParcel->allowModifyBy( | 655 | const LLUUID active_group = gAgent.getGroupID(); |
656 | gAgent.getID(), | 656 | |
657 | gAgent.getGroupID()))); | 657 | if (gAgent.isGodlike()) |
658 | } | 658 | return true; |
659 | else | 659 | |
660 | { | 660 | if (mAgentParcel->allowModifyBy(gAgent.getID(), active_group)) |
661 | return gAgent.isGodlike(); | 661 | return true; |
662 | |||
663 | // Ele: enable build option if we are in the land group and we have create powers, even if the group tag is not active | ||
664 | if (gAgent.isInGroup(parcel_group) && gAgent.hasPowerInGroup(parcel_group, GP_LAND_ALLOW_CREATE)) | ||
665 | return true; | ||
662 | } | 666 | } |
667 | |||
668 | return gAgent.isGodlike(); | ||
663 | } | 669 | } |
664 | 670 | ||
665 | BOOL LLViewerParcelMgr::agentCanTakeDamage() const | 671 | BOOL LLViewerParcelMgr::agentCanTakeDamage() const |