From 8763a637b5c2e48a97111b4f569e71b7e1c2f1d2 Mon Sep 17 00:00:00 2001
From: SignpostMarv
Date: Fri, 5 Oct 2012 14:55:00 +0100
Subject: transposing stop sound into sound module
---
.../World/Sound/SoundModuleNonShared.cs | 45 ++++++++++++++++++++++
.../Region/Framework/Interfaces/ISoundModule.cs | 6 +++
.../Shared/Api/Implementation/LSL_Api.cs | 42 +++-----------------
3 files changed, 56 insertions(+), 37 deletions(-)
diff --git a/OpenSim/Region/CoreModules/World/Sound/SoundModuleNonShared.cs b/OpenSim/Region/CoreModules/World/Sound/SoundModuleNonShared.cs
index f0e446f..670794d 100644
--- a/OpenSim/Region/CoreModules/World/Sound/SoundModuleNonShared.cs
+++ b/OpenSim/Region/CoreModules/World/Sound/SoundModuleNonShared.cs
@@ -178,6 +178,51 @@ namespace OpenSim.Region.CoreModules.World.Sound
});
}
+ public virtual void StopSound(UUID objectID)
+ {
+ SceneObjectPart m_host;
+ if (!m_scene.TryGetSceneObjectPart(objectID, out m_host))
+ return;
+
+ m_host.AdjustSoundGain(0);
+ // Xantor 20080528: Clear prim data of sound instead
+ if (m_host.ParentGroup.LoopSoundSlavePrims.Contains(m_host))
+ {
+ if (m_host.ParentGroup.LoopSoundMasterPrim == m_host)
+ {
+ foreach (SceneObjectPart part in m_host.ParentGroup.LoopSoundSlavePrims)
+ {
+ part.Sound = UUID.Zero;
+ part.SoundGain = 0;
+ part.SoundFlags = 0;
+ part.SoundRadius = 0;
+ part.ScheduleFullUpdate();
+ part.SendFullUpdateToAllClients();
+ }
+ m_host.ParentGroup.LoopSoundMasterPrim = null;
+ m_host.ParentGroup.LoopSoundSlavePrims.Clear();
+ }
+ else
+ {
+ m_host.Sound = UUID.Zero;
+ m_host.SoundGain = 0;
+ m_host.SoundFlags = 0;
+ m_host.SoundRadius = 0;
+ m_host.ScheduleFullUpdate();
+ m_host.SendFullUpdateToAllClients();
+ }
+ }
+ else
+ {
+ m_host.Sound = UUID.Zero;
+ m_host.SoundGain = 0;
+ m_host.SoundFlags = 0;
+ m_host.SoundRadius = 0;
+ m_host.ScheduleFullUpdate();
+ m_host.SendFullUpdateToAllClients();
+ }
+ }
+
#endregion
}
}
diff --git a/OpenSim/Region/Framework/Interfaces/ISoundModule.cs b/OpenSim/Region/Framework/Interfaces/ISoundModule.cs
index 6930d78..45219ed 100644
--- a/OpenSim/Region/Framework/Interfaces/ISoundModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/ISoundModule.cs
@@ -68,5 +68,11 @@ namespace OpenSim.Region.Framework.Interfaces
void TriggerSound(
UUID soundId, UUID ownerID, UUID objectID, UUID parentID,
double gain, Vector3 position, UInt64 handle, float radius);
+
+ ///
+ /// Stop sounds eminating from an object.
+ ///
+ /// Sound source ID
+ void StopSound(UUID objectID);
}
}
\ No newline at end of file
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 7fa01c1..25be3ff 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -107,6 +107,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
protected IUrlModule m_UrlModule = null;
protected Dictionary m_userInfoCache = new Dictionary();
protected int EMAIL_PAUSE_TIME = 20; // documented delay value for smtp.
+ protected ISoundModule m_SoundModule = null;
public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, TaskInventoryItem item)
{
@@ -119,6 +120,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
m_TransferModule =
m_ScriptEngine.World.RequestModuleInterface();
m_UrlModule = m_ScriptEngine.World.RequestModuleInterface();
+ m_SoundModule = m_ScriptEngine.World.RequestModuleInterface();
AsyncCommands = new AsyncCommandManager(ScriptEngine);
}
@@ -2451,43 +2453,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
public void llStopSound()
{
m_host.AddScriptLPS(1);
- m_host.AdjustSoundGain(0);
- // Xantor 20080528: Clear prim data of sound instead
- if (m_host.ParentGroup.LoopSoundSlavePrims.Contains(m_host))
- {
- if (m_host.ParentGroup.LoopSoundMasterPrim == m_host)
- {
- foreach (SceneObjectPart part in m_host.ParentGroup.LoopSoundSlavePrims)
- {
- part.Sound = UUID.Zero;
- part.SoundGain = 0;
- part.SoundFlags = 0;
- part.SoundRadius = 0;
- part.ScheduleFullUpdate();
- part.SendFullUpdateToAllClients();
- }
- m_host.ParentGroup.LoopSoundMasterPrim = null;
- m_host.ParentGroup.LoopSoundSlavePrims.Clear();
- }
- else
- {
- m_host.Sound = UUID.Zero;
- m_host.SoundGain = 0;
- m_host.SoundFlags = 0;
- m_host.SoundRadius = 0;
- m_host.ScheduleFullUpdate();
- m_host.SendFullUpdateToAllClients();
- }
- }
- else
- {
- m_host.Sound = UUID.Zero;
- m_host.SoundGain = 0;
- m_host.SoundFlags = 0;
- m_host.SoundRadius = 0;
- m_host.ScheduleFullUpdate();
- m_host.SendFullUpdateToAllClients();
- }
+
+ if (m_SoundModule != null)
+ m_SoundModule.StopSound(m_host.UUID);
}
public void llPreloadSound(string sound)
--
cgit v1.1