From bf23e5d66cf091d310c660877380f3727d0b0234 Mon Sep 17 00:00:00 2001 From: Dr Scofield Date: Fri, 23 May 2008 10:24:26 +0000 Subject: i've refactored the ChatModule into two modules: ChatModule and IRCBridgeModule. ChatModule is now only doing in-world chat. IRCBridgeModule is only doing, well, bridging chat to/from IRC. Both modules are now using a new OnChatFromWorld event handler (which Scene.PacketHandler is feeding for chat from in-world instead of going via the Interface method). This refactoring will allow us to easily add other bridge modules (e.g., an XMPP bridge module). there is still a bug in IRCBridgeModule (inherited from the old ChatModule) where FindClientRegion does not really find the client region... --- OpenSim/Region/Environment/Scenes/EventManager.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'OpenSim/Region/Environment/Scenes/EventManager.cs') diff --git a/OpenSim/Region/Environment/Scenes/EventManager.cs b/OpenSim/Region/Environment/Scenes/EventManager.cs index 7ff9213..e0a24a6 100644 --- a/OpenSim/Region/Environment/Scenes/EventManager.cs +++ b/OpenSim/Region/Environment/Scenes/EventManager.cs @@ -182,6 +182,13 @@ namespace OpenSim.Region.Environment.Scenes /// public delegate void DeregisterCapsEvent(LLUUID agentID, Caps caps); public event DeregisterCapsEvent OnDeregisterCaps; + /// + /// ChatFromWorldEvent is called via Scene when a chat message + /// from world comes in (chat from viewer is available via + /// client.OnChatFromViewer). + /// + public delegate void ChatFromWorldEvent(Object sender, ChatFromViewerArgs chat); + public event ChatFromWorldEvent OnChatFromWorld; public class MoneyTransferArgs : EventArgs { @@ -283,6 +290,7 @@ namespace OpenSim.Region.Environment.Scenes private OnTerrainTickDelegate handlerTerrainTick = null; // OnTerainTick; private RegisterCapsEvent handlerRegisterCaps = null; // OnRegisterCaps; private DeregisterCapsEvent handlerDeregisterCaps = null; // OnDeregisterCaps; + private ChatFromWorldEvent handlerChatFromWorld = null; // OnChatFromWorld; private NewInventoryItemUploadComplete handlerNewInventoryItemUpdateComplete = null; private RequestChangeWaterHeight handlerRequestChangeWaterHeight = null; //OnRequestChangeWaterHeight private ScriptControlEvent handlerScriptControlEvent = null; @@ -625,6 +633,16 @@ namespace OpenSim.Region.Environment.Scenes } } + + public void TriggerOnChatFromWorld(Object sender, ChatFromViewerArgs chat) + { + handlerChatFromWorld = OnChatFromWorld; + if (handlerChatFromWorld != null) + { + handlerChatFromWorld(sender, chat); + } + } + internal void TriggerControlEvent(uint p, LLUUID scriptUUID, LLUUID avatarID, uint held, uint _changed) { handlerScriptControlEvent = OnScriptControlEvent; -- cgit v1.1