diff options
Diffstat (limited to 'OpenSim/Region/Environment/Modules/InstantMessageModule.cs')
-rw-r--r-- | OpenSim/Region/Environment/Modules/InstantMessageModule.cs | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/OpenSim/Region/Environment/Modules/InstantMessageModule.cs b/OpenSim/Region/Environment/Modules/InstantMessageModule.cs index 2598e54..412d8c3 100644 --- a/OpenSim/Region/Environment/Modules/InstantMessageModule.cs +++ b/OpenSim/Region/Environment/Modules/InstantMessageModule.cs | |||
@@ -26,18 +26,55 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System.Collections.Generic; | ||
29 | using OpenSim.Region.Environment.Interfaces; | 30 | using OpenSim.Region.Environment.Interfaces; |
30 | using OpenSim.Region.Environment.Scenes; | 31 | using OpenSim.Region.Environment.Scenes; |
32 | using OpenSim.Framework.Console; | ||
31 | 33 | ||
32 | namespace OpenSim.Region.Environment.Modules | 34 | namespace OpenSim.Region.Environment.Modules |
33 | { | 35 | { |
34 | public class InstantMessageModule : IRegionModule | 36 | public class InstantMessageModule : IRegionModule |
35 | { | 37 | { |
36 | private Scene m_scene; | 38 | private List<Scene> m_scenes; |
39 | private LogBase m_log; | ||
37 | 40 | ||
38 | public void Initialise(Scene scene) | 41 | public void Initialise(Scene scene) |
39 | { | 42 | { |
40 | m_scene = scene; | 43 | if (!m_scenes.Contains(scene)) |
44 | m_scenes.Add(scene); | ||
45 | |||
46 | scene.EventManager.OnNewClient += OnNewClient; | ||
47 | m_log = OpenSim.Framework.Console.MainLog.Instance; | ||
48 | } | ||
49 | |||
50 | void OnNewClient(OpenSim.Framework.Interfaces.IClientAPI client) | ||
51 | { | ||
52 | client.OnInstantMessage += OnInstantMessage; | ||
53 | } | ||
54 | |||
55 | void OnInstantMessage(libsecondlife.LLUUID fromAgentID, | ||
56 | libsecondlife.LLUUID fromAgentSession, libsecondlife.LLUUID toAgentID, | ||
57 | libsecondlife.LLUUID imSessionID, uint timestamp, string fromAgentName, | ||
58 | string message, byte dialog) | ||
59 | { | ||
60 | // TODO: Remove after debugging. Privacy implications. | ||
61 | m_log.Verbose("IM",fromAgentName + ": " + message); | ||
62 | |||
63 | foreach (Scene m_scene in m_scenes) | ||
64 | { | ||
65 | if (m_scene.Entities.ContainsKey(toAgentID) && m_scene.Entities[toAgentID] is ScenePresence) | ||
66 | { | ||
67 | // Local Message | ||
68 | ScenePresence user = (ScenePresence)m_scene.Entities[toAgentID]; | ||
69 | user.ControllingClient.SendInstantMessage(fromAgentID, fromAgentSession, message, | ||
70 | toAgentID, imSessionID, user.Firstname + " " + user.Lastname, dialog, timestamp); | ||
71 | |||
72 | // Message sent | ||
73 | return; | ||
74 | } | ||
75 | } | ||
76 | |||
77 | // Still here, try send via Grid | ||
41 | } | 78 | } |
42 | 79 | ||
43 | public void PostInitialise() | 80 | public void PostInitialise() |
@@ -55,7 +92,7 @@ namespace OpenSim.Region.Environment.Modules | |||
55 | 92 | ||
56 | public bool IsSharedModule | 93 | public bool IsSharedModule |
57 | { | 94 | { |
58 | get { return false; } | 95 | get { return true; } |
59 | } | 96 | } |
60 | } | 97 | } |
61 | } | 98 | } |