diff options
author | Teravus Ovares | 2007-11-26 05:02:18 +0000 |
---|---|---|
committer | Teravus Ovares | 2007-11-26 05:02:18 +0000 |
commit | 175b6115f19f9bad7c81fde625250b3a7f8a33f2 (patch) | |
tree | f907f3b409eca34017f6e18dcf4d644b623d0302 /OpenSim/Region | |
parent | Added Region name to the terrain texture description that gets sent to the as... (diff) | |
download | opensim-SC_OLD-175b6115f19f9bad7c81fde625250b3a7f8a33f2.zip opensim-SC_OLD-175b6115f19f9bad7c81fde625250b3a7f8a33f2.tar.gz opensim-SC_OLD-175b6115f19f9bad7c81fde625250b3a7f8a33f2.tar.bz2 opensim-SC_OLD-175b6115f19f9bad7c81fde625250b3a7f8a33f2.tar.xz |
* Restarting regions with the estate tools works in sandbox mode. I'm still working on grid mode, however. It doesn't break anything, but that feature doesn't work in grid mode yet either.
Diffstat (limited to 'OpenSim/Region')
8 files changed, 211 insertions, 25 deletions
diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs index 8edfc6f..1afa74a 100644 --- a/OpenSim/Region/Application/OpenSimMain.cs +++ b/OpenSim/Region/Application/OpenSimMain.cs | |||
@@ -454,7 +454,7 @@ namespace OpenSim | |||
454 | } | 454 | } |
455 | UDPServer restartingRegion = CreateRegion(whichRegion); | 455 | UDPServer restartingRegion = CreateRegion(whichRegion); |
456 | restartingRegion.ServerListener(); | 456 | restartingRegion.ServerListener(); |
457 | m_sceneManager.SendSimOnlineNotification(restartingRegion.RegionHandle); | 457 | //m_sceneManager.SendSimOnlineNotification(restartingRegion.RegionHandle); |
458 | 458 | ||
459 | } | 459 | } |
460 | 460 | ||
diff --git a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs index 4efaa23..746a19a 100644 --- a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs +++ b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs | |||
@@ -155,11 +155,28 @@ namespace OpenSim.Region.Communications.Local | |||
155 | return mapBlocks; | 155 | return mapBlocks; |
156 | } | 156 | } |
157 | 157 | ||
158 | /// <summary> | 158 | /// <summary> |
159 | /// </summary> | 159 | /// </summary> |
160 | /// <param name="regionHandle"></param> | 160 | /// <param name="regionHandle"></param> |
161 | /// <param name="agentData"></param> | 161 | /// <param name="agentData"></param> |
162 | /// <returns></returns> | 162 | /// <returns></returns> |
163 | /// | ||
164 | public bool RegionUp(RegionInfo region) | ||
165 | { | ||
166 | foreach (RegionCommsListener listener in m_regionListeners.Values) | ||
167 | { | ||
168 | listener.TriggerRegionUp(region); | ||
169 | } | ||
170 | |||
171 | return true; | ||
172 | } | ||
173 | |||
174 | public bool TriggerRegionUp(RegionInfo region) | ||
175 | { | ||
176 | |||
177 | return false; | ||
178 | } | ||
179 | |||
163 | public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) | 180 | public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) |
164 | //should change from agentCircuitData | 181 | //should change from agentCircuitData |
165 | { | 182 | { |
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs index 6b2407a..a0d6bd3 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs | |||
@@ -380,6 +380,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
380 | InterRegionSingleton.Instance.OnChildAgent += IncomingChildAgent; | 380 | InterRegionSingleton.Instance.OnChildAgent += IncomingChildAgent; |
381 | InterRegionSingleton.Instance.OnPrimGroupArrival += IncomingPrim; | 381 | InterRegionSingleton.Instance.OnPrimGroupArrival += IncomingPrim; |
382 | InterRegionSingleton.Instance.OnPrimGroupNear += TriggerExpectPrimCrossing; | 382 | InterRegionSingleton.Instance.OnPrimGroupNear += TriggerExpectPrimCrossing; |
383 | InterRegionSingleton.Instance.OnRegionUp += TriggerRegionUp; | ||
383 | 384 | ||
384 | } | 385 | } |
385 | 386 | ||
@@ -465,6 +466,81 @@ namespace OpenSim.Region.Communications.OGS1 | |||
465 | } | 466 | } |
466 | return true; | 467 | return true; |
467 | } | 468 | } |
469 | |||
470 | // UGLY! | ||
471 | public bool RegionUp(RegionInfo region) | ||
472 | { | ||
473 | RegionInfo regInfo = null; | ||
474 | try | ||
475 | { | ||
476 | if (m_localBackend.RegionUp(region)) | ||
477 | { | ||
478 | return true; | ||
479 | } | ||
480 | foreach (RegionInfo remoteInfo in m_remoteRegionInfoCache.Values) | ||
481 | { | ||
482 | regInfo = RequestNeighbourInfo(remoteInfo.RegionHandle); | ||
483 | if (regInfo != null) | ||
484 | { | ||
485 | //don't want to be creating a new link to the remote instance every time like we are here | ||
486 | bool retValue = false; | ||
487 | |||
488 | |||
489 | OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject( | ||
490 | typeof(OGS1InterRegionRemoting), | ||
491 | "tcp://" + regInfo.RemotingAddress + | ||
492 | ":" + regInfo.RemotingPort + | ||
493 | "/InterRegions"); | ||
494 | |||
495 | if (remObject != null) | ||
496 | { | ||
497 | retValue = remObject.RegionUp(region); | ||
498 | } | ||
499 | else | ||
500 | { | ||
501 | Console.WriteLine("remoting object not found"); | ||
502 | } | ||
503 | remObject = null; | ||
504 | |||
505 | } | ||
506 | |||
507 | } | ||
508 | |||
509 | |||
510 | return true; | ||
511 | } | ||
512 | catch (RemotingException e) | ||
513 | { | ||
514 | MainLog.Instance.Warn("Remoting Error: Unable to connect to adjacent region: " + regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); | ||
515 | MainLog.Instance.Debug(e.ToString()); | ||
516 | return false; | ||
517 | } | ||
518 | catch (SocketException e) | ||
519 | { | ||
520 | MainLog.Instance.Warn("Socket Error: Unable to connect to adjacent region: " + regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); | ||
521 | MainLog.Instance.Debug(e.ToString()); | ||
522 | return false; | ||
523 | } | ||
524 | catch (InvalidCredentialException e) | ||
525 | { | ||
526 | MainLog.Instance.Warn("Invalid Credentials: Unable to connect to adjacent region: " + regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); | ||
527 | MainLog.Instance.Debug(e.ToString()); | ||
528 | return false; | ||
529 | } | ||
530 | catch (AuthenticationException e) | ||
531 | { | ||
532 | MainLog.Instance.Warn("Authentication exception: Unable to connect to adjacent region: " + regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); | ||
533 | MainLog.Instance.Debug(e.ToString()); | ||
534 | return false; | ||
535 | } | ||
536 | catch (Exception e) | ||
537 | { | ||
538 | MainLog.Instance.Warn("Unknown exception: Unable to connect to adjacent region: " + regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); | ||
539 | MainLog.Instance.Debug(e.ToString()); | ||
540 | return false; | ||
541 | } | ||
542 | return true; | ||
543 | } | ||
468 | /// <summary> | 544 | /// <summary> |
469 | /// | 545 | /// |
470 | /// </summary> | 546 | /// </summary> |
@@ -680,6 +756,20 @@ namespace OpenSim.Region.Communications.OGS1 | |||
680 | } | 756 | } |
681 | } | 757 | } |
682 | 758 | ||
759 | public bool TriggerRegionUp(RegionInfo regionData) | ||
760 | { | ||
761 | try | ||
762 | { | ||
763 | return m_localBackend.TriggerRegionUp(regionData); | ||
764 | } | ||
765 | |||
766 | catch (RemotingException e) | ||
767 | { | ||
768 | MainLog.Instance.Error("Remoting Error: Unable to connect to adjacent region.\n" + e.ToString()); | ||
769 | return false; | ||
770 | } | ||
771 | } | ||
772 | |||
683 | /// <summary> | 773 | /// <summary> |
684 | /// | 774 | /// |
685 | /// </summary> | 775 | /// </summary> |
diff --git a/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs b/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs index 70018fd..aa6f59a 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs | |||
@@ -41,6 +41,8 @@ namespace OpenSim.Region.Communications.OGS1 | |||
41 | 41 | ||
42 | public delegate bool PrimGroupArrival(ulong regionHandle, LLUUID primID, string objData); | 42 | public delegate bool PrimGroupArrival(ulong regionHandle, LLUUID primID, string objData); |
43 | 43 | ||
44 | public delegate bool RegionUP (RegionInfo region); | ||
45 | |||
44 | public sealed class InterRegionSingleton | 46 | public sealed class InterRegionSingleton |
45 | { | 47 | { |
46 | private static readonly InterRegionSingleton instance = new InterRegionSingleton(); | 48 | private static readonly InterRegionSingleton instance = new InterRegionSingleton(); |
@@ -49,6 +51,8 @@ namespace OpenSim.Region.Communications.OGS1 | |||
49 | public event ExpectArrival OnArrival; | 51 | public event ExpectArrival OnArrival; |
50 | public event InformRegionPrimGroup OnPrimGroupNear; | 52 | public event InformRegionPrimGroup OnPrimGroupNear; |
51 | public event PrimGroupArrival OnPrimGroupArrival; | 53 | public event PrimGroupArrival OnPrimGroupArrival; |
54 | public event RegionUp OnRegionUp; | ||
55 | |||
52 | 56 | ||
53 | static InterRegionSingleton() | 57 | static InterRegionSingleton() |
54 | { | 58 | { |
@@ -72,6 +76,15 @@ namespace OpenSim.Region.Communications.OGS1 | |||
72 | return false; | 76 | return false; |
73 | } | 77 | } |
74 | 78 | ||
79 | public bool RegionUp(RegionInfo region) | ||
80 | { | ||
81 | if (OnRegionUp != null) | ||
82 | { | ||
83 | return OnRegionUp(region); | ||
84 | } | ||
85 | return false; | ||
86 | } | ||
87 | |||
75 | public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) | 88 | public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) |
76 | { | 89 | { |
77 | if (OnArrival != null) | 90 | if (OnArrival != null) |
@@ -116,7 +129,18 @@ namespace OpenSim.Region.Communications.OGS1 | |||
116 | return false; | 129 | return false; |
117 | } | 130 | } |
118 | } | 131 | } |
119 | 132 | public bool RegionUp(RegionInfo region) | |
133 | { | ||
134 | try | ||
135 | { | ||
136 | return InterRegionSingleton.Instance.RegionUp(region); | ||
137 | } | ||
138 | catch (RemotingException e) | ||
139 | { | ||
140 | Console.WriteLine("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); | ||
141 | return false; | ||
142 | } | ||
143 | } | ||
120 | public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) | 144 | public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) |
121 | { | 145 | { |
122 | try | 146 | try |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index fd17d56..a9791ee 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -216,7 +216,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
216 | m_regionHandle = m_regInfo.RegionHandle; | 216 | m_regionHandle = m_regInfo.RegionHandle; |
217 | m_regionName = m_regInfo.RegionName; | 217 | m_regionName = m_regInfo.RegionName; |
218 | m_datastore = m_regInfo.DataStore; | 218 | m_datastore = m_regInfo.DataStore; |
219 | RegisterRegionWithComms(); | 219 | |
220 | m_physicalPrim = physicalPrim; | 220 | m_physicalPrim = physicalPrim; |
221 | m_sendTasksToChild = SendTasksToChild; | 221 | m_sendTasksToChild = SendTasksToChild; |
222 | 222 | ||
@@ -244,6 +244,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
244 | 244 | ||
245 | httpListener = httpServer; | 245 | httpListener = httpServer; |
246 | m_dumpAssetsToFile = dumpAssetsToFile; | 246 | m_dumpAssetsToFile = dumpAssetsToFile; |
247 | RegisterRegionWithComms(); | ||
247 | } | 248 | } |
248 | 249 | ||
249 | #endregion | 250 | #endregion |
@@ -257,21 +258,29 @@ namespace OpenSim.Region.Environment.Scenes | |||
257 | m_eventManager.OnPermissionError += SendPermissionAlert; | 258 | m_eventManager.OnPermissionError += SendPermissionAlert; |
258 | } | 259 | } |
259 | 260 | ||
260 | public override void OtherRegionUp(RegionInfo otherRegion) | 261 | public override bool OtherRegionUp(RegionInfo otherRegion) |
261 | { | 262 | { |
262 | // Another region is up. We have to tell all our ScenePresences about it | 263 | // Another region is up. We have to tell all our ScenePresences about it |
263 | // This fails to get the desired effect and needs further work. | 264 | // This fails to get the desired effect and needs further work. |
264 | 265 | try | |
265 | ForEachScenePresence(delegate(ScenePresence agent) | ||
266 | { | 266 | { |
267 | if (!(agent.IsChildAgent)) | 267 | |
268 | { | 268 | ForEachScenePresence(delegate(ScenePresence agent) |
269 | InformClientOfNeighbor(agent, otherRegion); | 269 | { |
270 | this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo()); | 270 | if (!(agent.IsChildAgent)) |
271 | 271 | { | |
272 | this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo()); | ||
273 | InformClientOfNeighbor(agent, otherRegion); | ||
274 | } | ||
272 | } | 275 | } |
276 | |||
277 | ); | ||
273 | } | 278 | } |
274 | ); | 279 | catch (System.NullReferenceException) |
280 | { | ||
281 | // This means that we're not booted up completely yet. | ||
282 | } | ||
283 | return true; | ||
275 | } | 284 | } |
276 | public virtual void Restart(float seconds) | 285 | public virtual void Restart(float seconds) |
277 | { | 286 | { |
@@ -1068,9 +1077,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
1068 | m_sceneGridService.OnExpectUser += NewUserConnection; | 1077 | m_sceneGridService.OnExpectUser += NewUserConnection; |
1069 | m_sceneGridService.OnAvatarCrossingIntoRegion += AgentCrossing; | 1078 | m_sceneGridService.OnAvatarCrossingIntoRegion += AgentCrossing; |
1070 | m_sceneGridService.OnCloseAgentConnection += CloseConnection; | 1079 | m_sceneGridService.OnCloseAgentConnection += CloseConnection; |
1080 | m_sceneGridService.OnRegionUp += OtherRegionUp; | ||
1081 | // Tell Other regions that I'm here. | ||
1082 | m_sceneGridService.InformNeighborsThatRegionisUp(RegionInfo); | ||
1071 | } | 1083 | } |
1072 | public void UnRegisterReginWithComms() | 1084 | public void UnRegisterReginWithComms() |
1073 | { | 1085 | { |
1086 | m_sceneGridService.OnRegionUp -= OtherRegionUp; | ||
1074 | m_sceneGridService.OnExpectUser -= NewUserConnection; | 1087 | m_sceneGridService.OnExpectUser -= NewUserConnection; |
1075 | m_sceneGridService.OnAvatarCrossingIntoRegion -= AgentCrossing; | 1088 | m_sceneGridService.OnAvatarCrossingIntoRegion -= AgentCrossing; |
1076 | m_sceneGridService.OnCloseAgentConnection -= CloseConnection; | 1089 | m_sceneGridService.OnCloseAgentConnection -= CloseConnection; |
@@ -1578,9 +1591,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
1578 | /// <param name="action"></param> | 1591 | /// <param name="action"></param> |
1579 | public void ForEachScenePresence(Action<ScenePresence> action) | 1592 | public void ForEachScenePresence(Action<ScenePresence> action) |
1580 | { | 1593 | { |
1581 | foreach (ScenePresence presence in m_scenePresences.Values) | 1594 | // We don't want to try to send messages if there are no avatar. |
1595 | if (!(m_scenePresences.Equals(null))) | ||
1582 | { | 1596 | { |
1583 | action(presence); | 1597 | foreach (ScenePresence presence in m_scenePresences.Values) |
1598 | { | ||
1599 | action(presence); | ||
1600 | } | ||
1584 | } | 1601 | } |
1585 | } | 1602 | } |
1586 | 1603 | ||
diff --git a/OpenSim/Region/Environment/Scenes/SceneBase.cs b/OpenSim/Region/Environment/Scenes/SceneBase.cs index 4359374..2db3bdc 100644 --- a/OpenSim/Region/Environment/Scenes/SceneBase.cs +++ b/OpenSim/Region/Environment/Scenes/SceneBase.cs | |||
@@ -41,7 +41,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
41 | #region Events | 41 | #region Events |
42 | 42 | ||
43 | public event restart OnRestart; | 43 | public event restart OnRestart; |
44 | public event regionup OnRegionUp; | ||
45 | 44 | ||
46 | #endregion | 45 | #endregion |
47 | 46 | ||
@@ -160,7 +159,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
160 | } | 159 | } |
161 | 160 | ||
162 | 161 | ||
163 | public abstract void OtherRegionUp(RegionInfo thisRegion); | 162 | public abstract bool OtherRegionUp(RegionInfo thisRegion); |
164 | 163 | ||
165 | 164 | ||
166 | #endregion | 165 | #endregion |
diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs index 9a10c51..ae44acb 100644 --- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs | |||
@@ -21,6 +21,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
21 | public event ExpectUserDelegate OnExpectUser; | 21 | public event ExpectUserDelegate OnExpectUser; |
22 | public event CloseAgentConnection OnCloseAgentConnection; | 22 | public event CloseAgentConnection OnCloseAgentConnection; |
23 | public event PrimCrossing OnPrimCrossingIntoRegion; | 23 | public event PrimCrossing OnPrimCrossingIntoRegion; |
24 | public event RegionUp OnRegionUp; | ||
24 | 25 | ||
25 | 26 | ||
26 | public SceneCommunicationService(CommunicationsManager commsMan) | 27 | public SceneCommunicationService(CommunicationsManager commsMan) |
@@ -38,6 +39,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
38 | regionCommsHost.OnAvatarCrossingIntoRegion += AgentCrossing; | 39 | regionCommsHost.OnAvatarCrossingIntoRegion += AgentCrossing; |
39 | regionCommsHost.OnPrimCrossingIntoRegion += PrimCrossing; | 40 | regionCommsHost.OnPrimCrossingIntoRegion += PrimCrossing; |
40 | regionCommsHost.OnCloseAgentConnection += CloseConnection; | 41 | regionCommsHost.OnCloseAgentConnection += CloseConnection; |
42 | regionCommsHost.OnRegionUp += newRegionUp; | ||
41 | 43 | ||
42 | 44 | ||
43 | } | 45 | } |
@@ -45,12 +47,16 @@ namespace OpenSim.Region.Environment.Scenes | |||
45 | 47 | ||
46 | public void Close() | 48 | public void Close() |
47 | { | 49 | { |
48 | regionCommsHost.OnExpectUser -= NewUserConnection; | 50 | if (regionCommsHost != null) |
49 | regionCommsHost.OnAvatarCrossingIntoRegion -= AgentCrossing; | 51 | { |
50 | regionCommsHost.OnPrimCrossingIntoRegion -= PrimCrossing; | 52 | regionCommsHost.OnRegionUp -= newRegionUp; |
51 | regionCommsHost.OnCloseAgentConnection -= CloseConnection; | 53 | regionCommsHost.OnExpectUser -= NewUserConnection; |
52 | m_commsProvider.GridService.DeregisterRegion(m_regionInfo); | 54 | regionCommsHost.OnAvatarCrossingIntoRegion -= AgentCrossing; |
53 | regionCommsHost = null; | 55 | regionCommsHost.OnPrimCrossingIntoRegion -= PrimCrossing; |
56 | regionCommsHost.OnCloseAgentConnection -= CloseConnection; | ||
57 | m_commsProvider.GridService.DeregisterRegion(m_regionInfo); | ||
58 | regionCommsHost = null; | ||
59 | } | ||
54 | } | 60 | } |
55 | 61 | ||
56 | #region CommsManager Event handlers | 62 | #region CommsManager Event handlers |
@@ -59,6 +65,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
59 | /// </summary> | 65 | /// </summary> |
60 | /// <param name="regionHandle"></param> | 66 | /// <param name="regionHandle"></param> |
61 | /// <param name="agent"></param> | 67 | /// <param name="agent"></param> |
68 | /// | ||
62 | protected void NewUserConnection(ulong regionHandle, AgentCircuitData agent) | 69 | protected void NewUserConnection(ulong regionHandle, AgentCircuitData agent) |
63 | { | 70 | { |
64 | if (OnExpectUser != null) | 71 | if (OnExpectUser != null) |
@@ -67,6 +74,15 @@ namespace OpenSim.Region.Environment.Scenes | |||
67 | } | 74 | } |
68 | } | 75 | } |
69 | 76 | ||
77 | protected bool newRegionUp(RegionInfo region) | ||
78 | { | ||
79 | if (OnRegionUp != null) | ||
80 | { | ||
81 | OnRegionUp(region); | ||
82 | } | ||
83 | return true; | ||
84 | } | ||
85 | |||
70 | protected void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) | 86 | protected void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) |
71 | { | 87 | { |
72 | if (OnAvatarCrossingIntoRegion != null) | 88 | if (OnAvatarCrossingIntoRegion != null) |
@@ -249,6 +265,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
249 | return m_commsProvider.InterRegion.ExpectAvatarCrossing(regionhandle, agentID, position, isFlying); | 265 | return m_commsProvider.InterRegion.ExpectAvatarCrossing(regionhandle, agentID, position, isFlying); |
250 | } | 266 | } |
251 | 267 | ||
268 | public void InformNeighborsThatRegionisUp(RegionInfo region) | ||
269 | { | ||
270 | bool val = m_commsProvider.InterRegion.RegionUp(region); | ||
271 | } | ||
272 | |||
252 | public bool PrimCrossToNeighboringRegion(ulong regionhandle, LLUUID primID, LLVector3 position, bool isPhysical) | 273 | public bool PrimCrossToNeighboringRegion(ulong regionhandle, LLUUID primID, LLVector3 position, bool isPhysical) |
253 | { | 274 | { |
254 | return m_commsProvider.InterRegion.ExpectPrimCrossing(regionhandle, primID, position, isPhysical); | 275 | return m_commsProvider.InterRegion.ExpectPrimCrossing(regionhandle, primID, position, isPhysical); |
diff --git a/OpenSim/Region/Environment/Scenes/SceneManager.cs b/OpenSim/Region/Environment/Scenes/SceneManager.cs index 4360d97..c28269e 100644 --- a/OpenSim/Region/Environment/Scenes/SceneManager.cs +++ b/OpenSim/Region/Environment/Scenes/SceneManager.cs | |||
@@ -121,17 +121,35 @@ namespace OpenSim.Region.Environment.Scenes | |||
121 | 121 | ||
122 | public void SendSimOnlineNotification(ulong regionHandle) | 122 | public void SendSimOnlineNotification(ulong regionHandle) |
123 | { | 123 | { |
124 | RegionInfo Result = null; | ||
124 | 125 | ||
125 | for (int i = 0; i < m_localScenes.Count; i++) | 126 | for (int i = 0; i < m_localScenes.Count; i++) |
126 | { | 127 | { |
127 | if (m_localScenes[i].RegionInfo.RegionHandle != regionHandle) | 128 | |
129 | if (m_localScenes[i].RegionInfo.RegionHandle == regionHandle) | ||
128 | { | 130 | { |
131 | |||
129 | // Inform other regions to tell their avatar about me | 132 | // Inform other regions to tell their avatar about me |
130 | m_localScenes[i].OtherRegionUp(m_localScenes[i].RegionInfo); | 133 | Result = m_localScenes[i].RegionInfo; |
131 | } | 134 | } |
132 | } | 135 | } |
136 | if (!(Result.Equals(null))) | ||
137 | { | ||
138 | for (int i = 0; i < m_localScenes.Count; i++) | ||
139 | { | ||
133 | 140 | ||
141 | if (m_localScenes[i].RegionInfo.RegionHandle != regionHandle) | ||
142 | { | ||
134 | 143 | ||
144 | // Inform other regions to tell their avatar about me | ||
145 | //m_localScenes[i].OtherRegionUp(Result); | ||
146 | } | ||
147 | } | ||
148 | } | ||
149 | else | ||
150 | { | ||
151 | MainLog.Instance.Error("REGION", "Unable to notify Other regions of this Region coming up"); | ||
152 | } | ||
135 | } | 153 | } |
136 | public void SaveCurrentSceneToXml(string filename) | 154 | public void SaveCurrentSceneToXml(string filename) |
137 | { | 155 | { |