diff --git a/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs b/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs index 439b082146..48c77170a4 100644 --- a/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs +++ b/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs @@ -75,7 +75,12 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage if (m_Gridmode) NotifyMessageServerOfStartup(scene); + scene.RegisterModuleInterface(this); + + scene.EventManager.OnNewClient += OnNewClient; + scene.EventManager.OnSetRootAgentScene += OnSetRootAgentScene; + m_Scenes.Add(scene); } } @@ -107,6 +112,19 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage { } + public void OnNewClient(IClientAPI client) + { + client.OnConnectionClosed += OnConnectionClosed; + } + + public void OnConnectionClosed(IClientAPI client) + { + } + + public void OnSetRootAgentScene(UUID agentID) + { + } + private void NotifyMessageServerOfStartup(Scene scene) { Hashtable xmlrpcdata = new Hashtable(); diff --git a/OpenSim/Region/Environment/Scenes/EventManager.cs b/OpenSim/Region/Environment/Scenes/EventManager.cs index bcefe375f5..cdaff51866 100644 --- a/OpenSim/Region/Environment/Scenes/EventManager.cs +++ b/OpenSim/Region/Environment/Scenes/EventManager.cs @@ -98,6 +98,10 @@ namespace OpenSim.Region.Environment.Scenes public delegate void OnPermissionErrorDelegate(UUID user, string reason); + public delegate void OnSetRootAgentSceneDelegate(UUID agentID); + + public event OnSetRootAgentSceneDelegate OnSetRootAgentScene; + public event ObjectGrabDelegate OnObjectGrab; public event ObjectDeGrabDelegate OnObjectDeGrab; public event ScriptResetDelegate OnScriptReset; @@ -389,6 +393,8 @@ namespace OpenSim.Region.Environment.Scenes private GetScriptRunning handlerGetScriptRunning = null; private SunLindenHour handlerSunGetLindenHour = null; + private OnSetRootAgentSceneDelegate handlerSetRootAgentScene = null; + public void TriggerGetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID) { @@ -912,5 +918,12 @@ namespace OpenSim.Region.Environment.Scenes if (handlerCollidingEnd != null) handlerCollidingEnd(localId, colliders); } + + public void TriggerSetRootAgentScene(UUID agentID) + { + handlerSetRootAgentScene = OnSetRootAgentScene; + if (handlerSetRootAgentScene != null) + handlerSetRootAgentScene(agentID); + } } } diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 2fcca43b32..0c5eb62972 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -4214,6 +4214,8 @@ namespace OpenSim.Region.Environment.Scenes return; inv.SetRootAgentScene(agentID, this); + + EventManager.TriggerSetRootAgentScene(agentID); } public bool NeedSceneCacheClear(UUID agentID)