aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/Sound
diff options
context:
space:
mode:
authorUbitUmarov2018-05-15 00:56:31 +0100
committerUbitUmarov2018-05-15 00:56:31 +0100
commitf87219975dbf3a1cdea1773f519c1a04e7bef745 (patch)
tree315ff6ce7effd7b631fb6e52fccaa7133b1e240e /OpenSim/Region/CoreModules/World/Sound
parentavoid potencial out of range issues (diff)
downloadopensim-SC-f87219975dbf3a1cdea1773f519c1a04e7bef745.zip
opensim-SC-f87219975dbf3a1cdea1773f519c1a04e7bef745.tar.gz
opensim-SC-f87219975dbf3a1cdea1773f519c1a04e7bef745.tar.bz2
opensim-SC-f87219975dbf3a1cdea1773f519c1a04e7bef745.tar.xz
bug fix: avoid null ref on trigger soundi if source is a avatar
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Sound')
-rw-r--r--OpenSim/Region/CoreModules/World/Sound/SoundModule.cs24
1 files changed, 14 insertions, 10 deletions
diff --git a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
index 14c230a..64f46df 100644
--- a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
+++ b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
@@ -169,6 +169,7 @@ namespace OpenSim.Region.CoreModules.World.Sound
169 public virtual void TriggerSound( 169 public virtual void TriggerSound(
170 UUID soundId, UUID ownerID, UUID objectID, UUID parentID, double gain, Vector3 position, UInt64 handle) 170 UUID soundId, UUID ownerID, UUID objectID, UUID parentID, double gain, Vector3 position, UInt64 handle)
171 { 171 {
172 float radius;
172 SceneObjectPart part; 173 SceneObjectPart part;
173 ScenePresence ssp = null; 174 ScenePresence ssp = null;
174 if (!m_scene.TryGetSceneObjectPart(objectID, out part)) 175 if (!m_scene.TryGetSceneObjectPart(objectID, out part))
@@ -177,28 +178,31 @@ namespace OpenSim.Region.CoreModules.World.Sound
177 return; 178 return;
178 if (!ssp.ParcelAllowThisAvatarSounds) 179 if (!ssp.ParcelAllowThisAvatarSounds)
179 return; 180 return;
181
182 radius = MaxDistance;
180 } 183 }
181 else 184 else
182 { 185 {
183 SceneObjectGroup grp = part.ParentGroup; 186 SceneObjectGroup grp = part.ParentGroup;
184 187
185 if (grp.IsAttachment) 188 if(grp.IsAttachment)
186 { 189 {
187 if (!m_scene.TryGetScenePresence(grp.AttachedAvatar, out ssp)) 190 if(!m_scene.TryGetScenePresence(grp.AttachedAvatar, out ssp))
188 return; 191 return;
189 192
190 if (!ssp.ParcelAllowThisAvatarSounds) 193 if(!ssp.ParcelAllowThisAvatarSounds)
191 return; 194 return;
195
192 } 196 }
193 }
194 197
195 float radius = (float)part.SoundRadius; 198 radius = (float)part.SoundRadius;
196 if (radius == 0) 199 if(radius == 0)
197 { 200 {
198 radius = MaxDistance; 201 radius = MaxDistance;
199 part.SoundRadius = MaxDistance; 202 part.SoundRadius = MaxDistance;
203 }
204 part.SoundFlags = 0;
200 } 205 }
201 part.SoundFlags = 0;
202 206
203 radius *= radius; 207 radius *= radius;
204 m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) 208 m_scene.ForEachRootScenePresence(delegate(ScenePresence sp)