aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment
diff options
context:
space:
mode:
authorSean Dague2008-03-28 12:47:03 +0000
committerSean Dague2008-03-28 12:47:03 +0000
commit2eda6a12962e0af23e060d4338e32896ddedf366 (patch)
tree0d6b055f5be5f589cfaa9d5f9f7ae031072e8feb /OpenSim/Region/Environment
parent* Correct asset type of Lost and Found folder - this might stop it appearing ... (diff)
downloadopensim-SC_OLD-2eda6a12962e0af23e060d4338e32896ddedf366.zip
opensim-SC_OLD-2eda6a12962e0af23e060d4338e32896ddedf366.tar.gz
opensim-SC_OLD-2eda6a12962e0af23e060d4338e32896ddedf366.tar.bz2
opensim-SC_OLD-2eda6a12962e0af23e060d4338e32896ddedf366.tar.xz
From: Michael Osias <mosias@us.ibm.com>
This patch implements llMessageLinked. I had to make a change to llGetLinkNumber to return m_host.LinkNum + 1 for link sets of more than 1 prim, or 0 for a single object, since according to: http://rpgstats.com/wiki/index.php?title=LlMessageLinked linksets with 2 or more prims start the link numbering at 1, but a single prims link number is 0.
Diffstat (limited to 'OpenSim/Region/Environment')
-rw-r--r--OpenSim/Region/Environment/Interfaces/IWorldComm.cs1
-rw-r--r--OpenSim/Region/Environment/Modules/WorldCommModule.cs24
2 files changed, 16 insertions, 9 deletions
diff --git a/OpenSim/Region/Environment/Interfaces/IWorldComm.cs b/OpenSim/Region/Environment/Interfaces/IWorldComm.cs
index a791310..6dd5d81 100644
--- a/OpenSim/Region/Environment/Interfaces/IWorldComm.cs
+++ b/OpenSim/Region/Environment/Interfaces/IWorldComm.cs
@@ -42,6 +42,5 @@ namespace OpenSim.Region.Environment.Interfaces
42 void DeleteListener(LLUUID itemID); 42 void DeleteListener(LLUUID itemID);
43 uint PeekNextMessageLocalID(); 43 uint PeekNextMessageLocalID();
44 LLUUID PeekNextMessageItemID(); 44 LLUUID PeekNextMessageItemID();
45
46 } 45 }
47} 46}
diff --git a/OpenSim/Region/Environment/Modules/WorldCommModule.cs b/OpenSim/Region/Environment/Modules/WorldCommModule.cs
index e1d2fbc..79e475c 100644
--- a/OpenSim/Region/Environment/Modules/WorldCommModule.cs
+++ b/OpenSim/Region/Environment/Modules/WorldCommModule.cs
@@ -75,6 +75,7 @@ namespace OpenSim.Region.Environment.Modules
75 private ListenerManager m_listenerManager; 75 private ListenerManager m_listenerManager;
76 private Queue m_pendingQ; 76 private Queue m_pendingQ;
77 private Queue m_pending; 77 private Queue m_pending;
78
78 public WorldCommModule() 79 public WorldCommModule()
79 { 80 {
80 } 81 }
@@ -112,6 +113,11 @@ namespace OpenSim.Region.Environment.Modules
112 client.OnChatFromViewer += DeliverClientMessage; 113 client.OnChatFromViewer += DeliverClientMessage;
113 } 114 }
114 115
116 /********************************************************************
117 *
118 * Listener Stuff
119 *
120 * *****************************************************************/
115 private void DeliverClientMessage(Object sender, ChatFromViewerArgs e) 121 private void DeliverClientMessage(Object sender, ChatFromViewerArgs e)
116 { 122 {
117 DeliverMessage(e.Sender.AgentId.ToString(), 123 DeliverMessage(e.Sender.AgentId.ToString(),
@@ -179,7 +185,7 @@ namespace OpenSim.Region.Environment.Modules
179 185
180 m_scene.Entities.TryGetValue(li.GetHostID(), out sPart); 186 m_scene.Entities.TryGetValue(li.GetHostID(), out sPart);
181 187
182 if(sPart != null) 188 if (sPart != null)
183 { 189 {
184 // Dont process if this message is from itself! 190 // Dont process if this message is from itself!
185 if (li.GetHostID().ToString().Equals(sourceItemID) || 191 if (li.GetHostID().ToString().Equals(sourceItemID) ||
@@ -291,7 +297,7 @@ namespace OpenSim.Region.Environment.Modules
291 297
292 lock (m_pending.SyncRoot) 298 lock (m_pending.SyncRoot)
293 { 299 {
294 li = (ListenerInfo) m_pending.Dequeue(); 300 li = (ListenerInfo)m_pending.Dequeue();
295 } 301 }
296 302
297 return li; 303 return li;
@@ -306,12 +312,13 @@ namespace OpenSim.Region.Environment.Modules
306 { 312 {
307 return ((ListenerInfo)m_pending.Peek()).GetItemID(); 313 return ((ListenerInfo)m_pending.Peek()).GetItemID();
308 } 314 }
309
310 } 315 }
311 316
312 // hostID: the ID of the ScenePart 317 /**********************************************************
313 // itemID: the ID of the script host engine 318 *
314 // localID: local ID of host engine 319 * Even more listener stuff
320 *
321 * ********************************************************/
315 public class ListenerManager 322 public class ListenerManager
316 { 323 {
317 //private Dictionary<int, ListenerInfo> m_listeners; 324 //private Dictionary<int, ListenerInfo> m_listeners;
@@ -434,9 +441,9 @@ namespace OpenSim.Region.Environment.Modules
434 { 441 {
435 ListenerInfo li = (ListenerInfo)en.Value; 442 ListenerInfo li = (ListenerInfo)en.Value;
436 443
437 if (li.GetHostID().Equals(listenerKey)) 444 if (li.IsActive())
438 { 445 {
439 if (li.IsActive()) 446 if (li.GetHostID().Equals(listenerKey))
440 { 447 {
441 if (channel == li.GetChannel()) 448 if (channel == li.GetChannel())
442 { 449 {
@@ -575,4 +582,5 @@ namespace OpenSim.Region.Environment.Modules
575 return m_id; 582 return m_id;
576 } 583 }
577 } 584 }
585
578} 586}