diff --git a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs
index f0f398417f..ba902b2a3b 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs
@@ -333,7 +333,6 @@ namespace OpenSim.Region.ClientStack.Linden
grp.AbsolutePosition = obj.Position;
prim.RotationOffset = obj.Rotation;
- grp.IsAttachment = false;
// Required for linking
grp.RootPart.ClearUpdateSchedule();
diff --git a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
index 93b10052fc..d768a1ac16 100644
--- a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
+++ b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
@@ -78,11 +78,8 @@ namespace OpenSim.Region.CoreModules.World.Sound
if (grp.IsAttachment)
{
- if (grp.AttachmentPoint > 30) // HUD
- {
- if (sp.ControllingClient.AgentId != grp.OwnerID)
- return;
- }
+ if (grp.HasPrivateAttachmentPoint && sp.ControllingClient.AgentId != grp.OwnerID)
+ return;
if (sp.ControllingClient.AgentId == grp.OwnerID)
dis = 0;
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 904c896c8d..5aeee521e4 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -244,6 +244,22 @@ namespace OpenSim.Region.Framework.Scenes
}
}
+ ///
+ /// If this scene object has an attachment point then indicate whether there is a point where
+ /// attachments are perceivable by avatars other than the avatar to which this object is attached.
+ ///
+ ///
+ /// HUDs are not perceivable by other avatars.
+ ///
+ public bool HasPrivateAttachmentPoint
+ {
+ get
+ {
+ return AttachmentPoint >= (uint)OpenMetaverse.AttachmentPoint.HUDCenter2
+ && AttachmentPoint <= (uint)OpenMetaverse.AttachmentPoint.HUDBottomRight;
+ }
+ }
+
public void ClearPartAttachmentData()
{
AttachmentPoint = 0;
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 61ef82727e..c1fe6a3035 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -3125,8 +3125,9 @@ namespace OpenSim.Region.Framework.Scenes
if (ParentGroup.IsDeleted)
return;
- if (ParentGroup.IsAttachment && (ParentGroup.AttachedAvatar != remoteClient.AgentId) &&
- (ParentGroup.AttachmentPoint >= 31) && (ParentGroup.AttachmentPoint <= 38))
+ if (ParentGroup.IsAttachment
+ && ParentGroup.AttachedAvatar != remoteClient.AgentId
+ && ParentGroup.HasPrivateAttachmentPoint)
return;
if (remoteClient.AgentId == OwnerID)