* Adds World.Audio.* to MRM

* This includes methods such as PlaySound which take a Position as an argument, allowing you to trigger sounds arbitrarily across the scene without needing a parent object in the position.
0.6.6-post-fixes
Adam Frisby 2009-05-29 23:49:48 +00:00
parent 433ee75775
commit c30b5ee014
3 changed files with 48 additions and 1 deletions

View File

@ -26,6 +26,7 @@
*/ */
using System; using System;
using OpenSim.Region.OptionalModules.Scripting.Minimodule.WorldX;
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{ {
@ -50,6 +51,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
IAvatar[] Avatars { get; } IAvatar[] Avatars { get; }
IParcel[] Parcels { get; } IParcel[] Parcels { get; }
IHeightmap Terrain { get; } IHeightmap Terrain { get; }
IWorldAudio Audio { get; }
event OnChatDelegate OnChat; event OnChatDelegate OnChat;
event OnNewUserDelegate OnNewUser; event OnNewUserDelegate OnNewUser;

View File

@ -26,13 +26,15 @@
*/ */
using System.Collections.Generic; using System.Collections.Generic;
using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.OptionalModules.Scripting.Minimodule.WorldX;
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{ {
public class World : System.MarshalByRefObject, IWorld public class World : System.MarshalByRefObject, IWorld, IWorldAudio
{ {
private readonly Scene m_internalScene; private readonly Scene m_internalScene;
private readonly Heightmap m_heights; private readonly Heightmap m_heights;
@ -93,6 +95,11 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
private event OnChatDelegate _OnChat; private event OnChatDelegate _OnChat;
private bool _OnChatActive; private bool _OnChatActive;
public IWorldAudio Audio
{
get { return this; }
}
public event OnChatDelegate OnChat public event OnChatDelegate OnChat
{ {
add add
@ -211,5 +218,29 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{ {
get { return m_heights; } get { return m_heights; }
} }
#region Implementation of IWorldAudio
public void PlaySound(UUID audio, Vector3 position, double volume)
{
ISoundModule soundModule = m_internalScene.RequestModuleInterface<ISoundModule>();
if (soundModule != null)
{
soundModule.TriggerSound(audio, UUID.Zero, UUID.Zero, UUID.Zero, volume, position,
m_internalScene.RegionInfo.RegionHandle);
}
}
public void PlaySound(UUID audio, Vector3 position)
{
ISoundModule soundModule = m_internalScene.RequestModuleInterface<ISoundModule>();
if (soundModule != null)
{
soundModule.TriggerSound(audio, UUID.Zero, UUID.Zero, UUID.Zero, 1.0, position,
m_internalScene.RegionInfo.RegionHandle);
}
}
#endregion
} }
} }

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
using OpenMetaverse;
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.WorldX
{
public interface IWorldAudio
{
void PlaySound(UUID audio, Vector3 position, double volume);
void PlaySound(UUID audio, Vector3 position);
}
}