diff options
Diffstat (limited to 'OpenSim/Region')
12 files changed, 129 insertions, 123 deletions
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index ba2c2de..f053911 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs | |||
@@ -365,7 +365,7 @@ namespace OpenSim | |||
365 | 365 | ||
366 | // moved these here as the terrain texture has to be created after the modules are initialized | 366 | // moved these here as the terrain texture has to be created after the modules are initialized |
367 | // and has to happen before the region is registered with the grid. | 367 | // and has to happen before the region is registered with the grid. |
368 | scene.CreateTerrainTexture(false); | 368 | scene.CreateTerrainTexture(); |
369 | 369 | ||
370 | // TODO : Try setting resource for region xstats here on scene | 370 | // TODO : Try setting resource for region xstats here on scene |
371 | MainServer.Instance.AddStreamHandler(new Region.Framework.Scenes.RegionStatsHandler(regionInfo)); | 371 | MainServer.Instance.AddStreamHandler(new Region.Framework.Scenes.RegionStatsHandler(regionInfo)); |
diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs index 53d2cef..f8e3d59 100644 --- a/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs | |||
@@ -121,6 +121,7 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps | |||
121 | UUID textureID; | 121 | UUID textureID; |
122 | if (!String.IsNullOrEmpty(textureStr) && UUID.TryParse(textureStr, out textureID)) | 122 | if (!String.IsNullOrEmpty(textureStr) && UUID.TryParse(textureStr, out textureID)) |
123 | { | 123 | { |
124 | //m_log.DebugFormat("[GETTEXTURE]: {0}", textureID); | ||
124 | AssetBase texture; | 125 | AssetBase texture; |
125 | 126 | ||
126 | if (!String.IsNullOrEmpty(REDIRECT_URL)) | 127 | if (!String.IsNullOrEmpty(REDIRECT_URL)) |
@@ -167,6 +168,7 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps | |||
167 | private void SendTexture(OSHttpRequest request, OSHttpResponse response, AssetBase texture) | 168 | private void SendTexture(OSHttpRequest request, OSHttpResponse response, AssetBase texture) |
168 | { | 169 | { |
169 | string range = request.Headers.GetOne("Range"); | 170 | string range = request.Headers.GetOne("Range"); |
171 | //m_log.DebugFormat("[GETTEXTURE]: Range {0}", range); | ||
170 | if (!String.IsNullOrEmpty(range)) | 172 | if (!String.IsNullOrEmpty(range)) |
171 | { | 173 | { |
172 | // Range request | 174 | // Range request |
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs index 57dde76..8f84d81 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs | |||
@@ -345,8 +345,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
345 | UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(client.Scene.RegionInfo.ScopeID, new UUID(im.fromAgentID)); | 345 | UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(client.Scene.RegionInfo.ScopeID, new UUID(im.fromAgentID)); |
346 | im.fromAgentName = account.FirstName + " " + account.LastName; | 346 | im.fromAgentName = account.FirstName + " " + account.LastName; |
347 | 347 | ||
348 | PresenceInfo presence = null; | ||
348 | PresenceInfo[] presences = PresenceService.GetAgents(new string[] { fid }); | 349 | PresenceInfo[] presences = PresenceService.GetAgents(new string[] { fid }); |
349 | PresenceInfo presence = PresenceInfo.GetOnlinePresence(presences); | 350 | if (presences != null && presences.Length > 0) |
351 | presence = presences[0]; | ||
350 | if (presence != null) | 352 | if (presence != null) |
351 | im.offline = 0; | 353 | im.offline = 0; |
352 | 354 | ||
@@ -380,13 +382,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
380 | PresenceInfo[] presence = PresenceService.GetAgents(friendList.ToArray()); | 382 | PresenceInfo[] presence = PresenceService.GetAgents(friendList.ToArray()); |
381 | 383 | ||
382 | foreach (PresenceInfo pi in presence) | 384 | foreach (PresenceInfo pi in presence) |
383 | { | 385 | online.Add(new UUID(pi.UserID)); |
384 | if (pi.Online) | 386 | //m_log.DebugFormat("[XXX] {0} friend online {1}", userID, pi.UserID); |
385 | { | ||
386 | online.Add(new UUID(pi.UserID)); | ||
387 | //m_log.DebugFormat("[XXX] {0} friend online {1}", userID, pi.UserID); | ||
388 | } | ||
389 | } | ||
390 | 387 | ||
391 | return online; | 388 | return online; |
392 | } | 389 | } |
@@ -495,11 +492,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
495 | 492 | ||
496 | // The friend is not here [as root]. Let's forward. | 493 | // The friend is not here [as root]. Let's forward. |
497 | PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() }); | 494 | PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() }); |
498 | PresenceInfo friendSession = PresenceInfo.GetOnlinePresence(friendSessions); | 495 | if (friendSessions != null && friendSessions.Length > 0) |
499 | if (friendSession != null) | ||
500 | { | 496 | { |
501 | GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); | 497 | PresenceInfo friendSession = friendSessions[0]; |
502 | m_FriendsSimConnector.StatusNotify(region, userID, friendID, online); | 498 | if (friendSession != null) |
499 | { | ||
500 | GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); | ||
501 | m_FriendsSimConnector.StatusNotify(region, userID, friendID, online); | ||
502 | } | ||
503 | } | 503 | } |
504 | 504 | ||
505 | // Friend is not online. Ignore. | 505 | // Friend is not online. Ignore. |
@@ -537,13 +537,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
537 | 537 | ||
538 | // The prospective friend is not here [as root]. Let's forward. | 538 | // The prospective friend is not here [as root]. Let's forward. |
539 | PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() }); | 539 | PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() }); |
540 | PresenceInfo friendSession = PresenceInfo.GetOnlinePresence(friendSessions); | 540 | if (friendSessions != null && friendSessions.Length > 0) |
541 | if (friendSession != null) | ||
542 | { | 541 | { |
543 | GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); | 542 | PresenceInfo friendSession = friendSessions[0]; |
544 | m_FriendsSimConnector.FriendshipOffered(region, agentID, friendID, im.message); | 543 | if (friendSession != null) |
544 | { | ||
545 | GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); | ||
546 | m_FriendsSimConnector.FriendshipOffered(region, agentID, friendID, im.message); | ||
547 | } | ||
545 | } | 548 | } |
546 | |||
547 | // If the prospective friend is not online, he'll get the message upon login. | 549 | // If the prospective friend is not online, he'll get the message upon login. |
548 | } | 550 | } |
549 | 551 | ||
@@ -569,14 +571,16 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
569 | 571 | ||
570 | // The friend is not here | 572 | // The friend is not here |
571 | PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() }); | 573 | PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() }); |
572 | PresenceInfo friendSession = PresenceInfo.GetOnlinePresence(friendSessions); | 574 | if (friendSessions != null && friendSessions.Length > 0) |
573 | if (friendSession != null) | ||
574 | { | 575 | { |
575 | GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); | 576 | PresenceInfo friendSession = friendSessions[0]; |
576 | m_FriendsSimConnector.FriendshipApproved(region, agentID, client.Name, friendID); | 577 | if (friendSession != null) |
577 | client.SendAgentOnline(new UUID[] { friendID }); | 578 | { |
579 | GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); | ||
580 | m_FriendsSimConnector.FriendshipApproved(region, agentID, client.Name, friendID); | ||
581 | client.SendAgentOnline(new UUID[] { friendID }); | ||
582 | } | ||
578 | } | 583 | } |
579 | |||
580 | } | 584 | } |
581 | 585 | ||
582 | private void OnDenyFriendRequest(IClientAPI client, UUID agentID, UUID friendID, List<UUID> callingCardFolders) | 586 | private void OnDenyFriendRequest(IClientAPI client, UUID agentID, UUID friendID, List<UUID> callingCardFolders) |
@@ -595,11 +599,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
595 | return; | 599 | return; |
596 | 600 | ||
597 | PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() }); | 601 | PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() }); |
598 | PresenceInfo friendSession = PresenceInfo.GetOnlinePresence(friendSessions); | 602 | if (friendSessions != null && friendSessions.Length > 0) |
599 | if (friendSession != null) | ||
600 | { | 603 | { |
601 | GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); | 604 | PresenceInfo friendSession = friendSessions[0]; |
602 | m_FriendsSimConnector.FriendshipDenied(region, agentID, client.Name, friendID); | 605 | if (friendSession != null) |
606 | { | ||
607 | GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); | ||
608 | m_FriendsSimConnector.FriendshipDenied(region, agentID, client.Name, friendID); | ||
609 | } | ||
603 | } | 610 | } |
604 | } | 611 | } |
605 | 612 | ||
@@ -622,11 +629,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
622 | return; | 629 | return; |
623 | 630 | ||
624 | PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { exfriendID.ToString() }); | 631 | PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { exfriendID.ToString() }); |
625 | PresenceInfo friendSession = PresenceInfo.GetOnlinePresence(friendSessions); | 632 | if (friendSessions != null && friendSessions.Length > 0) |
626 | if (friendSession != null) | ||
627 | { | 633 | { |
628 | GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); | 634 | PresenceInfo friendSession = friendSessions[0]; |
629 | m_FriendsSimConnector.FriendshipTerminated(region, agentID, exfriendID); | 635 | if (friendSession != null) |
636 | { | ||
637 | GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); | ||
638 | m_FriendsSimConnector.FriendshipTerminated(region, agentID, exfriendID); | ||
639 | } | ||
630 | } | 640 | } |
631 | } | 641 | } |
632 | 642 | ||
@@ -664,13 +674,16 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
664 | return; | 674 | return; |
665 | 675 | ||
666 | PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { target.ToString() }); | 676 | PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { target.ToString() }); |
667 | PresenceInfo friendSession = PresenceInfo.GetOnlinePresence(friendSessions); | 677 | if (friendSessions != null && friendSessions.Length > 0) |
668 | if (friendSession != null) | ||
669 | { | 678 | { |
670 | GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); | 679 | PresenceInfo friendSession = friendSessions[0]; |
671 | // TODO: You might want to send the delta to save the lookup | 680 | if (friendSession != null) |
672 | // on the other end!! | 681 | { |
673 | m_FriendsSimConnector.GrantRights(region, requester, target, myFlags, rights); | 682 | GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); |
683 | // TODO: You might want to send the delta to save the lookup | ||
684 | // on the other end!! | ||
685 | m_FriendsSimConnector.GrantRights(region, requester, target, myFlags, rights); | ||
686 | } | ||
674 | } | 687 | } |
675 | } | 688 | } |
676 | } | 689 | } |
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs index ad050a1..5d20e63 100644 --- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs | |||
@@ -471,7 +471,6 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
471 | if (m_UserRegionMap.ContainsKey(toAgentID)) | 471 | if (m_UserRegionMap.ContainsKey(toAgentID)) |
472 | { | 472 | { |
473 | upd = new PresenceInfo(); | 473 | upd = new PresenceInfo(); |
474 | upd.Online = true; | ||
475 | upd.RegionID = m_UserRegionMap[toAgentID]; | 474 | upd.RegionID = m_UserRegionMap[toAgentID]; |
476 | 475 | ||
477 | // We need to compare the current regionhandle with the previous region handle | 476 | // We need to compare the current regionhandle with the previous region handle |
@@ -493,15 +492,8 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
493 | { | 492 | { |
494 | // Non-cached user agent lookup. | 493 | // Non-cached user agent lookup. |
495 | PresenceInfo[] presences = PresenceService.GetAgents(new string[] { toAgentID.ToString() }); | 494 | PresenceInfo[] presences = PresenceService.GetAgents(new string[] { toAgentID.ToString() }); |
496 | if (presences != null) | 495 | if (presences != null && presences.Length > 0) |
497 | { | 496 | upd = presences[0]; |
498 | foreach (PresenceInfo p in presences) | ||
499 | if (p.Online) | ||
500 | { | ||
501 | upd = presences[0]; | ||
502 | break; | ||
503 | } | ||
504 | } | ||
505 | 497 | ||
506 | if (upd != null) | 498 | if (upd != null) |
507 | { | 499 | { |
@@ -525,61 +517,53 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
525 | 517 | ||
526 | if (upd != null) | 518 | if (upd != null) |
527 | { | 519 | { |
528 | if (upd.Online) | 520 | GridRegion reginfo = m_Scenes[0].GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, |
521 | upd.RegionID); | ||
522 | if (reginfo != null) | ||
529 | { | 523 | { |
530 | GridRegion reginfo = m_Scenes[0].GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, | 524 | Hashtable msgdata = ConvertGridInstantMessageToXMLRPC(im); |
531 | upd.RegionID); | 525 | // Not actually used anymore, left in for compatibility |
532 | if (reginfo != null) | 526 | // Remove at next interface change |
527 | // | ||
528 | msgdata["region_handle"] = 0; | ||
529 | bool imresult = doIMSending(reginfo, msgdata); | ||
530 | if (imresult) | ||
533 | { | 531 | { |
534 | Hashtable msgdata = ConvertGridInstantMessageToXMLRPC(im); | 532 | // IM delivery successful, so store the Agent's location in our local cache. |
535 | // Not actually used anymore, left in for compatibility | 533 | lock (m_UserRegionMap) |
536 | // Remove at next interface change | ||
537 | // | ||
538 | msgdata["region_handle"] = 0; | ||
539 | bool imresult = doIMSending(reginfo, msgdata); | ||
540 | if (imresult) | ||
541 | { | 534 | { |
542 | // IM delivery successful, so store the Agent's location in our local cache. | 535 | if (m_UserRegionMap.ContainsKey(toAgentID)) |
543 | lock (m_UserRegionMap) | ||
544 | { | 536 | { |
545 | if (m_UserRegionMap.ContainsKey(toAgentID)) | 537 | m_UserRegionMap[toAgentID] = upd.RegionID; |
546 | { | 538 | } |
547 | m_UserRegionMap[toAgentID] = upd.RegionID; | 539 | else |
548 | } | 540 | { |
549 | else | 541 | m_UserRegionMap.Add(toAgentID, upd.RegionID); |
550 | { | ||
551 | m_UserRegionMap.Add(toAgentID, upd.RegionID); | ||
552 | } | ||
553 | } | 542 | } |
554 | result(true); | ||
555 | } | ||
556 | else | ||
557 | { | ||
558 | // try again, but lookup user this time. | ||
559 | // Warning, this must call the Async version | ||
560 | // of this method or we'll be making thousands of threads | ||
561 | // The version within the spawned thread is SendGridInstantMessageViaXMLRPCAsync | ||
562 | // The version that spawns the thread is SendGridInstantMessageViaXMLRPC | ||
563 | |||
564 | // This is recursive!!!!! | ||
565 | SendGridInstantMessageViaXMLRPCAsync(im, result, | ||
566 | upd.RegionID); | ||
567 | } | 543 | } |
544 | result(true); | ||
568 | } | 545 | } |
569 | else | 546 | else |
570 | { | 547 | { |
571 | m_log.WarnFormat("[GRID INSTANT MESSAGE]: Unable to find region {0}", upd.RegionID); | 548 | // try again, but lookup user this time. |
572 | HandleUndeliveredMessage(im, result); | 549 | // Warning, this must call the Async version |
550 | // of this method or we'll be making thousands of threads | ||
551 | // The version within the spawned thread is SendGridInstantMessageViaXMLRPCAsync | ||
552 | // The version that spawns the thread is SendGridInstantMessageViaXMLRPC | ||
553 | |||
554 | // This is recursive!!!!! | ||
555 | SendGridInstantMessageViaXMLRPCAsync(im, result, | ||
556 | upd.RegionID); | ||
573 | } | 557 | } |
574 | } | 558 | } |
575 | else | 559 | else |
576 | { | 560 | { |
561 | m_log.WarnFormat("[GRID INSTANT MESSAGE]: Unable to find region {0}", upd.RegionID); | ||
577 | HandleUndeliveredMessage(im, result); | 562 | HandleUndeliveredMessage(im, result); |
578 | } | 563 | } |
579 | } | 564 | } |
580 | else | 565 | else |
581 | { | 566 | { |
582 | m_log.WarnFormat("[GRID INSTANT MESSAGE]: Unable to find user {0}", toAgentID); | ||
583 | HandleUndeliveredMessage(im, result); | 567 | HandleUndeliveredMessage(im, result); |
584 | } | 568 | } |
585 | } | 569 | } |
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/PresenceModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/PresenceModule.cs index bafad82..dd17f3c 100644 --- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/PresenceModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/PresenceModule.cs | |||
@@ -133,20 +133,14 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
133 | foreach (PresenceInfo pi in status) | 133 | foreach (PresenceInfo pi in status) |
134 | { | 134 | { |
135 | UUID uuid = new UUID(pi.UserID); | 135 | UUID uuid = new UUID(pi.UserID); |
136 | if (pi.Online) | 136 | if (!online.Contains(uuid)) |
137 | { | 137 | online.Add(uuid); |
138 | if (!online.Contains(uuid)) | 138 | } |
139 | { | 139 | foreach (string s in args) |
140 | online.Add(uuid); | 140 | { |
141 | if (offline.Contains(uuid)) | 141 | UUID uuid = new UUID(s); |
142 | offline.Remove(uuid); | 142 | if (!online.Contains(uuid) && !offline.Contains(uuid)) |
143 | } | 143 | offline.Add(uuid); |
144 | } | ||
145 | else | ||
146 | { | ||
147 | if (!online.Contains(uuid) && !offline.Contains(uuid)) | ||
148 | offline.Add(uuid); | ||
149 | } | ||
150 | } | 144 | } |
151 | 145 | ||
152 | if (online.Count > 0) | 146 | if (online.Count > 0) |
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs index 137dfec..7d26e3f 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs | |||
@@ -245,6 +245,14 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
245 | return; | 245 | return; |
246 | } | 246 | } |
247 | 247 | ||
248 | // Let's find out if this is a foreign user or a local user | ||
249 | UserAccount account = m_aScene.UserAccountService.GetUserAccount(m_aScene.RegionInfo.ScopeID, obj.AgentId); | ||
250 | if (account != null) | ||
251 | { | ||
252 | // local grid user | ||
253 | return; | ||
254 | } | ||
255 | |||
248 | AgentCircuitData aCircuit = ((Scene)(obj.Scene)).AuthenticateHandler.GetAgentCircuitData(obj.CircuitCode); | 256 | AgentCircuitData aCircuit = ((Scene)(obj.Scene)).AuthenticateHandler.GetAgentCircuitData(obj.CircuitCode); |
249 | 257 | ||
250 | if (aCircuit.ServiceURLs.ContainsKey("HomeURI")) | 258 | if (aCircuit.ServiceURLs.ContainsKey("HomeURI")) |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs index d44ddf4..46741a5 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs | |||
@@ -197,7 +197,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
197 | if (grinfo != null) | 197 | if (grinfo != null) |
198 | { | 198 | { |
199 | //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetRegionsByName {0} found {1} regions", name, grinfo.Count); | 199 | //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetRegionsByName {0} found {1} regions", name, grinfo.Count); |
200 | rinfo.AddRange(grinfo); | 200 | foreach (GridRegion r in grinfo) |
201 | if (rinfo.Find(delegate(GridRegion gr) { return gr.RegionID == r.RegionID; }) == null) | ||
202 | rinfo.Add(r); | ||
201 | } | 203 | } |
202 | 204 | ||
203 | return rinfo; | 205 | return rinfo; |
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index 2b0e83f..ac6a633 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs | |||
@@ -1000,7 +1000,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap | |||
1000 | return responsemap; | 1000 | return responsemap; |
1001 | } | 1001 | } |
1002 | 1002 | ||
1003 | public void LazySaveGeneratedMaptile(byte[] data, bool temporary) | 1003 | public void RegenerateMaptile(byte[] data) |
1004 | { | 1004 | { |
1005 | // Overwrites the local Asset cache with new maptile data | 1005 | // Overwrites the local Asset cache with new maptile data |
1006 | // Assets are single write, this causes the asset server to ignore this update, | 1006 | // Assets are single write, this causes the asset server to ignore this update, |
@@ -1010,7 +1010,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap | |||
1010 | // map tile while protecting the (grid) asset database from bloat caused by a new asset each | 1010 | // map tile while protecting the (grid) asset database from bloat caused by a new asset each |
1011 | // time a mapimage is generated! | 1011 | // time a mapimage is generated! |
1012 | 1012 | ||
1013 | UUID lastMapRegionUUID = m_scene.RegionInfo.lastMapUUID; | 1013 | UUID lastMapRegionUUID = m_scene.RegionInfo.RegionSettings.TerrainImageID; |
1014 | 1014 | ||
1015 | int lastMapRefresh = 0; | 1015 | int lastMapRefresh = 0; |
1016 | int twoDays = 172800; | 1016 | int twoDays = 172800; |
@@ -1030,21 +1030,9 @@ namespace OpenSim.Region.CoreModules.World.WorldMap | |||
1030 | { | 1030 | { |
1031 | } | 1031 | } |
1032 | 1032 | ||
1033 | UUID TerrainImageUUID = UUID.Random(); | 1033 | m_log.Debug("[MAPTILE]: STORING MAPTILE IMAGE"); |
1034 | 1034 | ||
1035 | if (lastMapRegionUUID == UUID.Zero || (lastMapRefresh + RefreshSeconds) < Util.UnixTimeSinceEpoch()) | 1035 | m_scene.RegionInfo.RegionSettings.TerrainImageID = UUID.Random(); |
1036 | { | ||
1037 | m_scene.RegionInfo.SaveLastMapUUID(TerrainImageUUID); | ||
1038 | |||
1039 | m_log.Debug("[MAPTILE]: STORING MAPTILE IMAGE"); | ||
1040 | } | ||
1041 | else | ||
1042 | { | ||
1043 | TerrainImageUUID = lastMapRegionUUID; | ||
1044 | m_log.Debug("[MAPTILE]: REUSING OLD MAPTILE IMAGE ID"); | ||
1045 | } | ||
1046 | |||
1047 | m_scene.RegionInfo.RegionSettings.TerrainImageID = TerrainImageUUID; | ||
1048 | 1036 | ||
1049 | AssetBase asset = new AssetBase( | 1037 | AssetBase asset = new AssetBase( |
1050 | m_scene.RegionInfo.RegionSettings.TerrainImageID, | 1038 | m_scene.RegionInfo.RegionSettings.TerrainImageID, |
@@ -1053,8 +1041,17 @@ namespace OpenSim.Region.CoreModules.World.WorldMap | |||
1053 | m_scene.RegionInfo.RegionID.ToString()); | 1041 | m_scene.RegionInfo.RegionID.ToString()); |
1054 | asset.Data = data; | 1042 | asset.Data = data; |
1055 | asset.Description = m_scene.RegionInfo.RegionName; | 1043 | asset.Description = m_scene.RegionInfo.RegionName; |
1056 | asset.Temporary = temporary; | 1044 | asset.Temporary = false; |
1045 | asset.Flags = AssetFlags.Maptile; | ||
1046 | |||
1047 | // Store the new one | ||
1048 | m_log.DebugFormat("[WORLDMAP]: Storing map tile {0}", asset.ID); | ||
1057 | m_scene.AssetService.Store(asset); | 1049 | m_scene.AssetService.Store(asset); |
1050 | m_scene.RegionInfo.RegionSettings.Save(); | ||
1051 | |||
1052 | // Delete the old one | ||
1053 | m_log.DebugFormat("[WORLDMAP]: Deleting old map tile {0}", lastMapRegionUUID); | ||
1054 | m_scene.AssetService.Delete(lastMapRegionUUID.ToString()); | ||
1058 | } | 1055 | } |
1059 | 1056 | ||
1060 | private void MakeRootAgent(ScenePresence avatar) | 1057 | private void MakeRootAgent(ScenePresence avatar) |
diff --git a/OpenSim/Region/Framework/Interfaces/IWorldMapModule.cs b/OpenSim/Region/Framework/Interfaces/IWorldMapModule.cs index de1bcd4..ac6afed 100644 --- a/OpenSim/Region/Framework/Interfaces/IWorldMapModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IWorldMapModule.cs | |||
@@ -29,6 +29,6 @@ namespace OpenSim.Region.Framework.Interfaces | |||
29 | { | 29 | { |
30 | public interface IWorldMapModule | 30 | public interface IWorldMapModule |
31 | { | 31 | { |
32 | void LazySaveGeneratedMaptile(byte[] data, bool temporary); | 32 | void RegenerateMaptile(byte[] data); |
33 | } | 33 | } |
34 | } | 34 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 122ed02..e920ff5 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -1851,7 +1851,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1851 | /// <summary> | 1851 | /// <summary> |
1852 | /// Create a terrain texture for this scene | 1852 | /// Create a terrain texture for this scene |
1853 | /// </summary> | 1853 | /// </summary> |
1854 | public void CreateTerrainTexture(bool temporary) | 1854 | public void CreateTerrainTexture() |
1855 | { | 1855 | { |
1856 | //create a texture asset of the terrain | 1856 | //create a texture asset of the terrain |
1857 | IMapImageGenerator terrain = RequestModuleInterface<IMapImageGenerator>(); | 1857 | IMapImageGenerator terrain = RequestModuleInterface<IMapImageGenerator>(); |
@@ -1869,7 +1869,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
1869 | IWorldMapModule mapModule = RequestModuleInterface<IWorldMapModule>(); | 1869 | IWorldMapModule mapModule = RequestModuleInterface<IWorldMapModule>(); |
1870 | 1870 | ||
1871 | if (mapModule != null) | 1871 | if (mapModule != null) |
1872 | mapModule.LazySaveGeneratedMaptile(data, temporary); | 1872 | mapModule.RegenerateMaptile(data); |
1873 | else | ||
1874 | m_log.DebugFormat("[SCENE]: MapModule is null, can't save maptile"); | ||
1873 | } | 1875 | } |
1874 | } | 1876 | } |
1875 | 1877 | ||
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 6ab3c62..68f6e7b 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -4108,8 +4108,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4108 | 4108 | ||
4109 | UserAccount account = World.UserAccountService.GetUserAccount(World.RegionInfo.ScopeID, uuid); | 4109 | UserAccount account = World.UserAccountService.GetUserAccount(World.RegionInfo.ScopeID, uuid); |
4110 | 4110 | ||
4111 | PresenceInfo pinfo = null; | ||
4111 | PresenceInfo[] pinfos = World.PresenceService.GetAgents(new string[] { uuid.ToString() }); | 4112 | PresenceInfo[] pinfos = World.PresenceService.GetAgents(new string[] { uuid.ToString() }); |
4112 | PresenceInfo pinfo = PresenceInfo.GetOnlinePresence(pinfos); | 4113 | if (pinfos != null && pinfos.Length > 0) |
4114 | pinfo = pinfos[0]; | ||
4113 | 4115 | ||
4114 | if (pinfo == null) | 4116 | if (pinfo == null) |
4115 | return UUID.Zero.ToString(); | 4117 | return UUID.Zero.ToString(); |
@@ -5822,7 +5824,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
5822 | public LSL_String llGetLandOwnerAt(LSL_Vector pos) | 5824 | public LSL_String llGetLandOwnerAt(LSL_Vector pos) |
5823 | { | 5825 | { |
5824 | m_host.AddScriptLPS(1); | 5826 | m_host.AddScriptLPS(1); |
5825 | return World.LandChannel.GetLandObject((float)pos.x, (float)pos.y).LandData.OwnerID.ToString(); | 5827 | ILandObject land = World.LandChannel.GetLandObject((float)pos.x, (float)pos.y); |
5828 | if (land == null) | ||
5829 | return UUID.Zero.ToString(); | ||
5830 | return land.LandData.OwnerID.ToString(); | ||
5826 | } | 5831 | } |
5827 | 5832 | ||
5828 | /// <summary> | 5833 | /// <summary> |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs index d354fde..a5b1124 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs | |||
@@ -485,7 +485,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins | |||
485 | } | 485 | } |
486 | else | 486 | else |
487 | { | 487 | { |
488 | // If full circle is asked for, just add it | ||
489 | sensedEntities.Add(new SensedEntity(dis, presence.UUID)); | 488 | sensedEntities.Add(new SensedEntity(dis, presence.UUID)); |
490 | } | 489 | } |
491 | } | 490 | } |