aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/CoreModules/World/Sound/SoundModule.cs51
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs4
2 files changed, 36 insertions, 19 deletions
diff --git a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
index b43380c..9c99c19 100644
--- a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
+++ b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
@@ -139,14 +139,25 @@ namespace OpenSim.Region.CoreModules.World.Sound
139 if (part.SoundQueueing) 139 if (part.SoundQueueing)
140 flags |= (byte)SoundFlags.QUEUE; 140 flags |= (byte)SoundFlags.QUEUE;
141 141
142 m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) 142 if (grp.IsAttachment)
143 { 143 {
144 if (grp.IsAttachment) 144 ScenePresence ssp = null;
145 if (!m_scene.TryGetScenePresence(grp.AttachedAvatar, out ssp))
146 return;
147
148 if (!ssp.ParcelAllowThisAvatarSounds)
149 return;
150
151 if (grp.HasPrivateAttachmentPoint)
145 { 152 {
146 if (grp.HasPrivateAttachmentPoint && sp.ControllingClient.AgentId != grp.OwnerID) 153 ssp.ControllingClient.SendPlayAttachedSound(soundID, objectID,
147 return; 154 ownerID, (float)gain, flags);
155 return;
148 } 156 }
149// no radius ? 157 }
158
159 m_scene.ForEachRootScenePresence(delegate(ScenePresence sp)
160 {
150 sp.ControllingClient.SendPlayAttachedSound(soundID, objectID, 161 sp.ControllingClient.SendPlayAttachedSound(soundID, objectID,
151 ownerID, (float)gain, flags); 162 ownerID, (float)gain, flags);
152 }); 163 });
@@ -156,20 +167,33 @@ namespace OpenSim.Region.CoreModules.World.Sound
156 UUID soundId, UUID ownerID, UUID objectID, UUID parentID, double gain, Vector3 position, UInt64 handle, float radius) 167 UUID soundId, UUID ownerID, UUID objectID, UUID parentID, double gain, Vector3 position, UInt64 handle, float radius)
157 { 168 {
158 SceneObjectPart part; 169 SceneObjectPart part;
170 ScenePresence ssp = null;
159 if (!m_scene.TryGetSceneObjectPart(objectID, out part)) 171 if (!m_scene.TryGetSceneObjectPart(objectID, out part))
160 { 172 {
161 ScenePresence sp; 173 if (!m_scene.TryGetScenePresence(ownerID, out ssp))
162 if (!m_scene.TryGetScenePresence(ownerID, out sp)) 174 return;
175 if (!ssp.ParcelAllowThisAvatarSounds)
163 return; 176 return;
164 } 177 }
165 else 178 else
166 { 179 {
167 SceneObjectGroup grp = part.ParentGroup; 180 SceneObjectGroup grp = part.ParentGroup;
168 181
169 if (grp.IsAttachment && grp.HasPrivateAttachmentPoint) 182 if (grp.IsAttachment)
170 { 183 {
171// objectID = ownerID; 184 if (!m_scene.TryGetScenePresence(grp.AttachedAvatar, out ssp))
172 parentID = ownerID; 185 return;
186
187 if (!ssp.ParcelAllowThisAvatarSounds)
188 return;
189
190 if (grp.HasPrivateAttachmentPoint)
191 {
192 ssp.ControllingClient.SendTriggeredSound(soundId, ownerID,
193 objectID, parentID, handle, position,
194 (float)gain);
195 return;
196 }
173 } 197 }
174 } 198 }
175 199
@@ -242,13 +266,6 @@ namespace OpenSim.Region.CoreModules.World.Sound
242 if (!m_scene.TryGetSceneObjectPart(objectID, out m_host)) 266 if (!m_scene.TryGetSceneObjectPart(objectID, out m_host))
243 return; 267 return;
244 268
245// if (isMaster)
246// m_host.ParentGroup.LoopSoundMasterPrim = m_host;
247
248 // sl does not stop previus sound, volume changes don't work (wiki)
249// if (m_host.Sound != UUID.Zero)
250// StopSound(m_host);
251
252 byte iflags = 1; // looping 269 byte iflags = 1; // looping
253 if (isMaster) 270 if (isMaster)
254 iflags |= (byte)SoundFlags.SYNC_MASTER; 271 iflags |= (byte)SoundFlags.SYNC_MASTER;
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 3c64219..6b627be 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -482,7 +482,7 @@ namespace OpenSim.Region.Framework.Scenes
482 } 482 }
483 } 483 }
484 484
485 public bool ParcelAllowSounds 485 public bool ParcelAllowThisAvatarSounds
486 { 486 {
487 get 487 get
488 { 488 {
@@ -5064,7 +5064,7 @@ namespace OpenSim.Region.Framework.Scenes
5064 5064
5065 else 5065 else
5066 { 5066 {
5067 bool candoparcelSound = ParcelAllowSounds; 5067 bool candoparcelSound = ParcelAllowThisAvatarSounds;
5068 5068
5069 foreach (uint id in coldata.Keys) 5069 foreach (uint id in coldata.Keys)
5070 { 5070 {