aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-06-14 01:12:16 +0100
committerJustin Clark-Casey (justincc)2012-06-14 01:20:55 +0100
commita4290048e5333d34910fd8c4dfd6cb9b5819d1c1 (patch)
tree2615edb0a04edff9f3d412f0f0b7b4a3b676537e
parentminor: remove unnecessary IsAttachment = false setting for new object in Uplo... (diff)
downloadopensim-SC-a4290048e5333d34910fd8c4dfd6cb9b5819d1c1.zip
opensim-SC-a4290048e5333d34910fd8c4dfd6cb9b5819d1c1.tar.gz
opensim-SC-a4290048e5333d34910fd8c4dfd6cb9b5819d1c1.tar.bz2
opensim-SC-a4290048e5333d34910fd8c4dfd6cb9b5819d1c1.tar.xz
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)
-rw-r--r--OpenSim/Region/CoreModules/World/Sound/SoundModule.cs7
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs16
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs5
3 files changed, 21 insertions, 7 deletions
diff --git a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
index 93b1005..d768a1a 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
78 78
79 if (grp.IsAttachment) 79 if (grp.IsAttachment)
80 { 80 {
81 if (grp.AttachmentPoint > 30) // HUD 81 if (grp.HasPrivateAttachmentPoint && sp.ControllingClient.AgentId != grp.OwnerID)
82 { 82 return;
83 if (sp.ControllingClient.AgentId != grp.OwnerID)
84 return;
85 }
86 83
87 if (sp.ControllingClient.AgentId == grp.OwnerID) 84 if (sp.ControllingClient.AgentId == grp.OwnerID)
88 dis = 0; 85 dis = 0;
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
180 } 180 }
181 } 181 }
182 182
183 /// <summary>
184 /// If this scene object has an attachment point then indicate whether there is a point where
185 /// attachments are perceivable by avatars other than the avatar to which this object is attached.
186 /// </summary>
187 /// <remarks>
188 /// HUDs are not perceivable by other avatars.
189 /// </remarks>
190 public bool HasPrivateAttachmentPoint
191 {
192 get
193 {
194 return AttachmentPoint >= (uint)OpenMetaverse.AttachmentPoint.HUDCenter2
195 && AttachmentPoint <= (uint)OpenMetaverse.AttachmentPoint.HUDBottomRight;
196 }
197 }
198
183 public void ClearPartAttachmentData() 199 public void ClearPartAttachmentData()
184 { 200 {
185 AttachmentPoint = 0; 201 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
2573 if (ParentGroup.IsDeleted) 2573 if (ParentGroup.IsDeleted)
2574 return; 2574 return;
2575 2575
2576 if (ParentGroup.IsAttachment && (ParentGroup.AttachedAvatar != remoteClient.AgentId) && 2576 if (ParentGroup.IsAttachment
2577 (ParentGroup.AttachmentPoint >= 31) && (ParentGroup.AttachmentPoint <= 38)) 2577 && ParentGroup.AttachedAvatar != remoteClient.AgentId
2578 && ParentGroup.HasPrivateAttachmentPoint)
2578 return; 2579 return;
2579 2580
2580 if (remoteClient.AgentId == OwnerID) 2581 if (remoteClient.AgentId == OwnerID)