From a4290048e5333d34910fd8c4dfd6cb9b5819d1c1 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 14 Jun 2012 01:12:16 +0100
Subject: Add SOG.HasPrivateAttachmentPoint to tell if a SOG has a private
attachment point. HUDs attachment points are private.
Change SOP.SendFullUpdateToClient() and SoundModule.PlayAttachedSound() to use this rather than different magic number formulations.
This also corrects a bug in PlayAttachedSound() where the code assumed that all attachment points over 30 were HUDs.
It appears this is no longer true with Neck and Root (Avatar Center)
---
OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 16 ++++++++++++++++
OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 5 +++--
2 files changed, 19 insertions(+), 2 deletions(-)
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 20d7a01..619296e 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -180,6 +180,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 17c7661..7640fc0 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -2573,8 +2573,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)
--
cgit v1.1