aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment')
-rw-r--r--OpenSim/Region/Environment/Scenes/InnerScene.cs69
1 files changed, 38 insertions, 31 deletions
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs
index 9d4119d..7ffddb3 100644
--- a/OpenSim/Region/Environment/Scenes/InnerScene.cs
+++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs
@@ -338,6 +338,7 @@ namespace OpenSim.Region.Environment.Scenes
338 public void AttachObject(IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, LLQuaternion rot) 338 public void AttachObject(IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, LLQuaternion rot)
339 { 339 {
340 // Calls attach with a Zero position 340 // Calls attach with a Zero position
341
341 AttachObject(remoteClient, objectLocalID, AttachmentPt, rot, LLVector3.Zero); 342 AttachObject(remoteClient, objectLocalID, AttachmentPt, rot, LLVector3.Zero);
342 } 343 }
343 public void RezSingleAttachment(IClientAPI remoteClient, LLUUID itemID, uint AttachmentPt,uint ItemFlags, uint NextOwnerMask) 344 public void RezSingleAttachment(IClientAPI remoteClient, LLUUID itemID, uint AttachmentPt,uint ItemFlags, uint NextOwnerMask)
@@ -393,46 +394,52 @@ namespace OpenSim.Region.Environment.Scenes
393 if (((SceneObjectGroup)obj).LocalId == objectLocalID) 394 if (((SceneObjectGroup)obj).LocalId == objectLocalID)
394 { 395 {
395 SceneObjectGroup group = (SceneObjectGroup)obj; 396 SceneObjectGroup group = (SceneObjectGroup)obj;
396 397 if (m_parentScene.Permissions.CanEditObject(remoteClient.AgentId, obj.UUID))
397 // If the attachment point isn't the same as the one previously used
398 // set it's offset position = 0 so that it appears on the attachment point
399 // and not in a weird location somewhere unknown.
400 if (AttachmentPt != 0 && AttachmentPt != (uint)group.GetAttachmentPoint())
401 { 398 {
399 // If the attachment point isn't the same as the one previously used
400 // set it's offset position = 0 so that it appears on the attachment point
401 // and not in a weird location somewhere unknown.
402 if (AttachmentPt != 0 && AttachmentPt != (uint)group.GetAttachmentPoint())
403 {
402 404
403 attachPos = LLVector3.Zero; 405 attachPos = LLVector3.Zero;
404 } 406 }
405 407
406 // AttachmentPt 0 means the client chose to 'wear' the attachment. 408 // AttachmentPt 0 means the client chose to 'wear' the attachment.
407 if (AttachmentPt == 0) 409 if (AttachmentPt == 0)
408 { 410 {
409
410 // Check object for stored attachment point
411 AttachmentPt = (uint)group.GetAttachmentPoint();
412
413 411
414 } 412 // Check object for stored attachment point
413 AttachmentPt = (uint)group.GetAttachmentPoint();
415 414
416 // if we still didn't find a suitable attachment point....... 415
417 if (AttachmentPt == 0) 416 }
418 { 417
419 // Stick it on left hand with Zero Offset from the attachment point. 418 // if we still didn't find a suitable attachment point.......
420 AttachmentPt = (uint)AttachmentPoint.LeftHand; 419 if (AttachmentPt == 0)
421 attachPos = LLVector3.Zero; 420 {
422 } 421 // Stick it on left hand with Zero Offset from the attachment point.
422 AttachmentPt = (uint)AttachmentPoint.LeftHand;
423 attachPos = LLVector3.Zero;
424 }
423 m_log.Debug("[ATTACH]: Using attachpoint: " + AttachmentPt.ToString()); 425 m_log.Debug("[ATTACH]: Using attachpoint: " + AttachmentPt.ToString());
424
425
426 426
427 // Saves and gets assetID
428 if (group.GetFromAssetID() == LLUUID.Zero)
429 {
430 LLUUID newAssetID = m_parentScene.attachObjectAssetStore(remoteClient, group, remoteClient.AgentId);
431 427
432 // sets assetID so client can show asset as 'attached' in inventory 428
433 group.SetFromAssetID(newAssetID); 429 // Saves and gets assetID
430 if (group.GetFromAssetID() == LLUUID.Zero)
431 {
432 LLUUID newAssetID = m_parentScene.attachObjectAssetStore(remoteClient, group, remoteClient.AgentId);
433
434 // sets assetID so client can show asset as 'attached' in inventory
435 group.SetFromAssetID(newAssetID);
436 }
437 group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos);
438 }
439 else
440 {
441 remoteClient.SendAgentAlertMessage("You don't have sufficient permissions to attach this object", false);
434 } 442 }
435 group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos);
436 443
437 } 444 }
438 445