aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Application/OpenSimBase.cs2
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs87
-rw-r--r--OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs78
-rw-r--r--OpenSim/Region/CoreModules/Avatar/InstantMessage/PresenceModule.cs22
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs8
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs4
-rw-r--r--OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs31
-rw-r--r--OpenSim/Region/Framework/Interfaces/IWorldMapModule.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs6
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs9
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs1
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 }