aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/lltoolplacer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/newview/lltoolplacer.cpp')
-rw-r--r--linden/indra/newview/lltoolplacer.cpp44
1 files changed, 41 insertions, 3 deletions
diff --git a/linden/indra/newview/lltoolplacer.cpp b/linden/indra/newview/lltoolplacer.cpp
index 84e0203..18793c5 100644
--- a/linden/indra/newview/lltoolplacer.cpp
+++ b/linden/indra/newview/lltoolplacer.cpp
@@ -65,6 +65,9 @@
65#include "llviewercamera.h" 65#include "llviewercamera.h"
66#include "llviewerstats.h" 66#include "llviewerstats.h"
67 67
68#include "llparcel.h" // RezWithLandGroup
69#include "llviewerparcelmgr.h" // RezWithLandGroup
70
68const LLVector3 DEFAULT_OBJECT_SCALE(0.5f, 0.5f, 0.5f); 71const LLVector3 DEFAULT_OBJECT_SCALE(0.5f, 0.5f, 0.5f);
69 72
70//static 73//static
@@ -213,8 +216,22 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics )
213 216
214 // Set params for new object based on its PCode. 217 // Set params for new object based on its PCode.
215 LLQuaternion rotation; 218 LLQuaternion rotation;
216 LLVector3 scale = DEFAULT_OBJECT_SCALE; 219 LLVector3 scale = LLVector3(
220 gSavedPerAccountSettings.getF32("BuildPrefs_Xsize"),
221 gSavedPerAccountSettings.getF32("BuildPrefs_Ysize"),
222 gSavedPerAccountSettings.getF32("BuildPrefs_Zsize"));
223
217 U8 material = LL_MCODE_WOOD; 224 U8 material = LL_MCODE_WOOD;
225 if(gSavedPerAccountSettings.getString("BuildPrefs_Material")== "Stone") material = LL_MCODE_STONE;
226 if(gSavedPerAccountSettings.getString("BuildPrefs_Material")== "Metal") material = LL_MCODE_METAL;
227 if(gSavedPerAccountSettings.getString("BuildPrefs_Material")== "Wood") material = LL_MCODE_WOOD;
228 if(gSavedPerAccountSettings.getString("BuildPrefs_Material")== "Flesh") material = LL_MCODE_FLESH;
229 if(gSavedPerAccountSettings.getString("BuildPrefs_Material")== "Rubber") material = LL_MCODE_RUBBER;
230 if(gSavedPerAccountSettings.getString("BuildPrefs_Material")== "Plastic") material = LL_MCODE_PLASTIC;
231
232
233
234
218 BOOL create_selected = FALSE; 235 BOOL create_selected = FALSE;
219 LLVolumeParams volume_params; 236 LLVolumeParams volume_params;
220 237
@@ -255,12 +272,33 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics )
255 gMessageSystem->nextBlockFast(_PREHASH_AgentData); 272 gMessageSystem->nextBlockFast(_PREHASH_AgentData);
256 gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); 273 gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
257 gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); 274 gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
258 gMessageSystem->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID()); 275 // RezWithLandGroup 2009-05, If avatar is in land group/land owner group,
276 // it rezzes it with it to prevent autoreturn/whatever
277 if ( gSavedSettings.getBOOL("RezWithLandGroup") )
278 {
279 LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
280 if ( gAgent.isInGroup(parcel->getGroupID()) )
281 {
282 gMessageSystem->addUUIDFast(_PREHASH_GroupID, parcel->getGroupID());
283 }
284 else if ( gAgent.isInGroup(parcel->getOwnerID()) )
285 {
286 gMessageSystem->addUUIDFast(_PREHASH_GroupID, parcel->getOwnerID());
287 }
288 else
289 {
290 gMessageSystem->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID());
291 }
292 }
293 else
294 {
295 gMessageSystem->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID());
296 }
259 gMessageSystem->nextBlockFast(_PREHASH_ObjectData); 297 gMessageSystem->nextBlockFast(_PREHASH_ObjectData);
260 gMessageSystem->addU8Fast(_PREHASH_Material, material); 298 gMessageSystem->addU8Fast(_PREHASH_Material, material);
261 299
262 U32 flags = 0; // not selected 300 U32 flags = 0; // not selected
263 if (use_physics) 301 if (use_physics || gSavedPerAccountSettings.getBOOL("BuildPrefs_Physical"))
264 { 302 {
265 flags |= FLAGS_USE_PHYSICS; 303 flags |= FLAGS_USE_PHYSICS;
266 } 304 }