aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/World/Sound/SoundModule.cs18
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs8
2 files changed, 16 insertions, 10 deletions
diff --git a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
index e77062b..8df645d 100644
--- a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
+++ b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
@@ -31,12 +31,14 @@ using OpenMetaverse;
31using OpenSim.Framework; 31using OpenSim.Framework;
32using OpenSim.Region.Framework.Interfaces; 32using OpenSim.Region.Framework.Interfaces;
33using OpenSim.Region.Framework.Scenes; 33using OpenSim.Region.Framework.Scenes;
34using System.Reflection;
35using log4net;
34 36
35namespace OpenSim.Region.CoreModules.World.Sound 37namespace OpenSim.Region.CoreModules.World.Sound
36{ 38{
37 public class SoundModule : IRegionModule, ISoundModule 39 public class SoundModule : IRegionModule, ISoundModule
38 { 40 {
39 //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 41 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
40 42
41 protected Scene m_scene; 43 protected Scene m_scene;
42 44
@@ -79,7 +81,6 @@ namespace OpenSim.Region.CoreModules.World.Sound
79 81
80 if (grp.IsAttachment) 82 if (grp.IsAttachment)
81 { 83 {
82
83 if (grp.GetAttachmentPoint() > 30) // HUD 84 if (grp.GetAttachmentPoint() > 30) // HUD
84 { 85 {
85 if (sp.ControllingClient.AgentId != grp.OwnerID) 86 if (sp.ControllingClient.AgentId != grp.OwnerID)
@@ -96,6 +97,7 @@ namespace OpenSim.Region.CoreModules.World.Sound
96 else 97 else
97 gain = (float)((double)gain * ((radius - dis) / radius)); 98 gain = (float)((double)gain * ((radius - dis) / radius));
98 99
100 m_log.DebugFormat("Play sound, gain {0}", gain);
99 sp.ControllingClient.SendPlayAttachedSound(soundID, objectID, ownerID, (float)gain, flags); 101 sp.ControllingClient.SendPlayAttachedSound(soundID, objectID, ownerID, (float)gain, flags);
100 }); 102 });
101 } 103 }
@@ -103,6 +105,18 @@ namespace OpenSim.Region.CoreModules.World.Sound
103 public virtual void TriggerSound( 105 public virtual void TriggerSound(
104 UUID soundId, UUID ownerID, UUID objectID, UUID parentID, double gain, Vector3 position, UInt64 handle, float radius) 106 UUID soundId, UUID ownerID, UUID objectID, UUID parentID, double gain, Vector3 position, UInt64 handle, float radius)
105 { 107 {
108 SceneObjectPart part = m_scene.GetSceneObjectPart(objectID);
109 if (part == null)
110 return;
111
112 SceneObjectGroup grp = part.ParentGroup;
113
114 if (grp.IsAttachment && grp.GetAttachmentPoint() > 30)
115 {
116 objectID = ownerID;
117 parentID = ownerID;
118 }
119
106 m_scene.ForEachScenePresence(delegate(ScenePresence sp) 120 m_scene.ForEachScenePresence(delegate(ScenePresence sp)
107 { 121 {
108 if (sp.IsChildAgent) 122 if (sp.IsChildAgent)
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 5521326..be3e87f 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -3115,14 +3115,6 @@ namespace OpenSim.Region.Framework.Scenes
3115 UUID objectID = ParentGroup.RootPart.UUID; 3115 UUID objectID = ParentGroup.RootPart.UUID;
3116 UUID parentID = GetRootPartUUID(); 3116 UUID parentID = GetRootPartUUID();
3117 3117
3118 if (ParentGroup.IsAttachment && ParentGroup.RootPart.Shape.State > 30)
3119 {
3120 // Use the avatar as the parent for HUDs, since the prims
3121 // are not sent to other avatars
3122 objectID = _ownerID;
3123 parentID = _ownerID;
3124 }
3125
3126 UUID soundID = UUID.Zero; 3118 UUID soundID = UUID.Zero;
3127 Vector3 position = AbsolutePosition; // region local 3119 Vector3 position = AbsolutePosition; // region local
3128 ulong regionHandle = m_parentGroup.Scene.RegionInfo.RegionHandle; 3120 ulong regionHandle = m_parentGroup.Scene.RegionInfo.RegionHandle;