diff options
Diffstat (limited to '')
13 files changed, 35 insertions, 16 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index febe1d7..642e82e 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -1022,7 +1022,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1022 | // Set home position | 1022 | // Set home position |
1023 | 1023 | ||
1024 | GridRegion home = scene.GridService.GetRegionByPosition(scopeID, | 1024 | GridRegion home = scene.GridService.GetRegionByPosition(scopeID, |
1025 | (int)(regionXLocation * Constants.RegionSize), (int)(regionYLocation * Constants.RegionSize)); | 1025 | (int)Util.RegionToWorldLoc(regionXLocation), (int)Util.RegionToWorldLoc(regionYLocation)); |
1026 | if (null == home) | 1026 | if (null == home) |
1027 | { | 1027 | { |
1028 | m_log.WarnFormat("[RADMIN]: Unable to set home region for newly created user account {0} {1}", firstName, lastName); | 1028 | m_log.WarnFormat("[RADMIN]: Unable to set home region for newly created user account {0} {1}", firstName, lastName); |
@@ -1252,7 +1252,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1252 | if ((null != regionXLocation) && (null != regionYLocation)) | 1252 | if ((null != regionXLocation) && (null != regionYLocation)) |
1253 | { | 1253 | { |
1254 | GridRegion home = scene.GridService.GetRegionByPosition(scopeID, | 1254 | GridRegion home = scene.GridService.GetRegionByPosition(scopeID, |
1255 | (int)(regionXLocation * Constants.RegionSize), (int)(regionYLocation * Constants.RegionSize)); | 1255 | (int)Util.RegionToWorldLoc((uint)regionXLocation), (int)Util.RegionToWorldLoc((uint)regionYLocation)); |
1256 | if (null == home) { | 1256 | if (null == home) { |
1257 | m_log.WarnFormat("[RADMIN]: Unable to set home region for updated user account {0} {1}", firstName, lastName); | 1257 | m_log.WarnFormat("[RADMIN]: Unable to set home region for updated user account {0} {1}", firstName, lastName); |
1258 | } else { | 1258 | } else { |
@@ -2883,7 +2883,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2883 | // Set home position | 2883 | // Set home position |
2884 | 2884 | ||
2885 | GridRegion home = scene.GridService.GetRegionByPosition(scopeID, | 2885 | GridRegion home = scene.GridService.GetRegionByPosition(scopeID, |
2886 | (int)(regionXLocation * Constants.RegionSize), (int)(regionYLocation * Constants.RegionSize)); | 2886 | (int)Util.RegionToWorldLoc(regionXLocation), (int)Util.RegionToWorldLoc(regionYLocation)); |
2887 | if (null == home) { | 2887 | if (null == home) { |
2888 | m_log.WarnFormat("[RADMIN]: Unable to set home region for newly created user account {0} {1}", names[0], names[1]); | 2888 | m_log.WarnFormat("[RADMIN]: Unable to set home region for newly created user account {0} {1}", names[0], names[1]); |
2889 | } else { | 2889 | } else { |
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 105e75d..2276951 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -336,6 +336,7 @@ namespace OpenSim.Framework | |||
336 | // Regions are identified with a 'handle' made up of its region coordinates packed into a ulong. | 336 | // Regions are identified with a 'handle' made up of its region coordinates packed into a ulong. |
337 | // Several places rely on the ability to extract a region's location from its handle. | 337 | // Several places rely on the ability to extract a region's location from its handle. |
338 | // Note the location is in 'world coordinates' (see below). | 338 | // Note the location is in 'world coordinates' (see below). |
339 | // Region handles are based on the lowest coordinate of the region so trim the passed x,y to be the regions 0,0. | ||
339 | public static ulong RegionWorldLocToHandle(uint X, uint Y) | 340 | public static ulong RegionWorldLocToHandle(uint X, uint Y) |
340 | { | 341 | { |
341 | return Utils.UIntsToLong(X, Y); | 342 | return Utils.UIntsToLong(X, Y); |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs index 828240b..598351e 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs | |||
@@ -192,6 +192,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
192 | return m_GridService.GetRegionByUUID(scopeID, regionID); | 192 | return m_GridService.GetRegionByUUID(scopeID, regionID); |
193 | } | 193 | } |
194 | 194 | ||
195 | // Get a region given its base coordinates. | ||
196 | // NOTE: this is NOT 'get a region by some point in the region'. The coordinate MUST | ||
197 | // be the base coordinate of the region. | ||
195 | public GridRegion GetRegionByPosition(UUID scopeID, int x, int y) | 198 | public GridRegion GetRegionByPosition(UUID scopeID, int x, int y) |
196 | { | 199 | { |
197 | GridRegion region = null; | 200 | GridRegion region = null; |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RegionCache.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RegionCache.cs index a6b1b56..33ff7ea 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RegionCache.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RegionCache.cs | |||
@@ -82,6 +82,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
82 | return new List<GridRegion>(m_neighbours.Values); | 82 | return new List<GridRegion>(m_neighbours.Values); |
83 | } | 83 | } |
84 | 84 | ||
85 | // Get a region given its base coordinates. | ||
86 | // NOTE: this is NOT 'get a region by some point in the region'. The coordinate MUST | ||
87 | // be the base coordinate of the region. | ||
88 | // The snapping is technically unnecessary but is harmless because regions are always | ||
89 | // multiples of the legacy region size (256). | ||
85 | public GridRegion GetRegionByPosition(int x, int y) | 90 | public GridRegion GetRegionByPosition(int x, int y) |
86 | { | 91 | { |
87 | uint xsnap = (uint)(x / Constants.RegionSize) * Constants.RegionSize; | 92 | uint xsnap = (uint)(x / Constants.RegionSize) * Constants.RegionSize; |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs index 6a57d1f..ac81337 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs | |||
@@ -186,10 +186,14 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
186 | return rinfo; | 186 | return rinfo; |
187 | } | 187 | } |
188 | 188 | ||
189 | // Get a region given its base coordinates. | ||
190 | // NOTE: this is NOT 'get a region by some point in the region'. The coordinate MUST | ||
191 | // be the base coordinate of the region. | ||
192 | // The coordinates are world coords (meters), NOT region units. | ||
189 | public GridRegion GetRegionByPosition(UUID scopeID, int x, int y) | 193 | public GridRegion GetRegionByPosition(UUID scopeID, int x, int y) |
190 | { | 194 | { |
191 | bool inCache = false; | 195 | bool inCache = false; |
192 | GridRegion rinfo = m_RegionInfoCache.Get(scopeID, Util.UIntsToLong((uint)x, (uint)y), out inCache); | 196 | GridRegion rinfo = m_RegionInfoCache.Get(scopeID, Util.RegionWorldLocToHandle((uint)x, (uint)y), out inCache); |
193 | if (inCache) | 197 | if (inCache) |
194 | return rinfo; | 198 | return rinfo; |
195 | 199 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs index 4338133..25ae689 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs | |||
@@ -34,6 +34,7 @@ using log4net.Config; | |||
34 | using Nini.Config; | 34 | using Nini.Config; |
35 | using NUnit.Framework; | 35 | using NUnit.Framework; |
36 | using OpenMetaverse; | 36 | using OpenMetaverse; |
37 | |||
37 | using OpenSim.Framework; | 38 | using OpenSim.Framework; |
38 | using OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid; | 39 | using OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid; |
39 | using OpenSim.Region.Framework.Scenes; | 40 | using OpenSim.Region.Framework.Scenes; |
@@ -141,7 +142,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.Tests | |||
141 | Assert.IsNotNull(result, "Retrieved GetRegionByUUID is null"); | 142 | Assert.IsNotNull(result, "Retrieved GetRegionByUUID is null"); |
142 | Assert.That(result.RegionID, Is.EqualTo(new UUID(1)), "Retrieved region's UUID does not match"); | 143 | Assert.That(result.RegionID, Is.EqualTo(new UUID(1)), "Retrieved region's UUID does not match"); |
143 | 144 | ||
144 | result = m_LocalConnector.GetRegionByPosition(UUID.Zero, 1000 * (int)Constants.RegionSize, 1000 * (int)Constants.RegionSize); | 145 | result = m_LocalConnector.GetRegionByPosition(UUID.Zero, (int)Util.RegionToWorldLoc(1000), (int)Util.RegionToWorldLoc(1000)); |
145 | Assert.IsNotNull(result, "Retrieved GetRegionByPosition is null"); | 146 | Assert.IsNotNull(result, "Retrieved GetRegionByPosition is null"); |
146 | Assert.That(result.RegionLocX, Is.EqualTo(1000 * (int)Constants.RegionSize), "Retrieved region's position does not match"); | 147 | Assert.That(result.RegionLocX, Is.EqualTo(1000 * (int)Constants.RegionSize), "Retrieved region's position does not match"); |
147 | 148 | ||
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 092dfa3..a68f67f 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | |||
@@ -1789,7 +1789,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1789 | { | 1789 | { |
1790 | // most likely still cached from building the extLandData entry | 1790 | // most likely still cached from building the extLandData entry |
1791 | uint x = 0, y = 0; | 1791 | uint x = 0, y = 0; |
1792 | Utils.LongToUInts(data.RegionHandle, out x, out y); | 1792 | Util.RegionHandleToWorldLoc(data.RegionHandle, out x, out y); |
1793 | info = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, (int)x, (int)y); | 1793 | info = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, (int)x, (int)y); |
1794 | } | 1794 | } |
1795 | // we need to transfer the fake parcelID, not the one in landData, so the viewer can match it to the landmark. | 1795 | // we need to transfer the fake parcelID, not the one in landData, so the viewer can match it to the landmark. |
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index 8383f4e..2d564fe 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs | |||
@@ -803,7 +803,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap | |||
803 | if (httpserver.Length == 0) | 803 | if (httpserver.Length == 0) |
804 | { | 804 | { |
805 | uint x = 0, y = 0; | 805 | uint x = 0, y = 0; |
806 | Utils.LongToUInts(regionhandle, out x, out y); | 806 | Util.RegionHandleToWorldLoc(regionhandle, out x, out y); |
807 | GridRegion mreg = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, (int)x, (int)y); | 807 | GridRegion mreg = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, (int)x, (int)y); |
808 | 808 | ||
809 | if (mreg != null) | 809 | if (mreg != null) |
diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index 262b882..c873e40 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs | |||
@@ -166,7 +166,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
166 | // we only want to send one update to each simulator; the simulator will | 166 | // we only want to send one update to each simulator; the simulator will |
167 | // hand it off to the regions where a child agent exists, this does assume | 167 | // hand it off to the regions where a child agent exists, this does assume |
168 | // that the region position is cached or performance will degrade | 168 | // that the region position is cached or performance will degrade |
169 | Utils.LongToUInts(regionHandle, out x, out y); | 169 | Util.RegionHandleToWorldLoc(regionHandle, out x, out y); |
170 | GridRegion dest = m_scene.GridService.GetRegionByPosition(UUID.Zero, (int)x, (int)y); | 170 | GridRegion dest = m_scene.GridService.GetRegionByPosition(UUID.Zero, (int)x, (int)y); |
171 | if (dest == null) | 171 | if (dest == null) |
172 | continue; | 172 | continue; |
@@ -203,7 +203,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
203 | 203 | ||
204 | //m_commsProvider.InterRegion.TellRegionToCloseChildConnection(regionHandle, agentID); | 204 | //m_commsProvider.InterRegion.TellRegionToCloseChildConnection(regionHandle, agentID); |
205 | uint x = 0, y = 0; | 205 | uint x = 0, y = 0; |
206 | Utils.LongToUInts(regionHandle, out x, out y); | 206 | Util.RegionHandleToWorldLoc(regionHandle, out x, out y); |
207 | 207 | ||
208 | GridRegion destination = m_scene.GridService.GetRegionByPosition(m_regionInfo.ScopeID, (int)x, (int)y); | 208 | GridRegion destination = m_scene.GridService.GetRegionByPosition(m_regionInfo.ScopeID, (int)x, (int)y); |
209 | 209 | ||
diff --git a/OpenSim/Server/Handlers/Map/MapAddServerConnector.cs b/OpenSim/Server/Handlers/Map/MapAddServerConnector.cs index d438fc7..4d1729e 100644 --- a/OpenSim/Server/Handlers/Map/MapAddServerConnector.cs +++ b/OpenSim/Server/Handlers/Map/MapAddServerConnector.cs | |||
@@ -116,9 +116,9 @@ namespace OpenSim.Server.Handlers.MapImage | |||
116 | httpResponse.StatusCode = (int)OSHttpStatusCode.ClientErrorBadRequest; | 116 | httpResponse.StatusCode = (int)OSHttpStatusCode.ClientErrorBadRequest; |
117 | return FailureResult("Bad request."); | 117 | return FailureResult("Bad request."); |
118 | } | 118 | } |
119 | int x = 0, y = 0; | 119 | uint x = 0, y = 0; |
120 | Int32.TryParse(request["X"].ToString(), out x); | 120 | UInt32.TryParse(request["X"].ToString(), out x); |
121 | Int32.TryParse(request["Y"].ToString(), out y); | 121 | UInt32.TryParse(request["Y"].ToString(), out y); |
122 | 122 | ||
123 | m_log.DebugFormat("[MAP ADD SERVER CONNECTOR]: Received map data for region at {0}-{1}", x, y); | 123 | m_log.DebugFormat("[MAP ADD SERVER CONNECTOR]: Received map data for region at {0}-{1}", x, y); |
124 | 124 | ||
@@ -130,7 +130,7 @@ namespace OpenSim.Server.Handlers.MapImage | |||
130 | if (m_GridService != null) | 130 | if (m_GridService != null) |
131 | { | 131 | { |
132 | System.Net.IPAddress ipAddr = GetCallerIP(httpRequest); | 132 | System.Net.IPAddress ipAddr = GetCallerIP(httpRequest); |
133 | GridRegion r = m_GridService.GetRegionByPosition(UUID.Zero, x * (int)Constants.RegionSize, y * (int)Constants.RegionSize); | 133 | GridRegion r = m_GridService.GetRegionByPosition(UUID.Zero, (int)Util.RegionToWorldLoc(x), (int)Util.RegionToWorldLoc(y)); |
134 | if (r != null) | 134 | if (r != null) |
135 | { | 135 | { |
136 | if (r.ExternalEndPoint.Address.ToString() != ipAddr.ToString()) | 136 | if (r.ExternalEndPoint.Address.ToString() != ipAddr.ToString()) |
@@ -151,7 +151,7 @@ namespace OpenSim.Server.Handlers.MapImage | |||
151 | byte[] data = Convert.FromBase64String(request["DATA"].ToString()); | 151 | byte[] data = Convert.FromBase64String(request["DATA"].ToString()); |
152 | 152 | ||
153 | string reason = string.Empty; | 153 | string reason = string.Empty; |
154 | bool result = m_MapService.AddMapTile(x, y, data, out reason); | 154 | bool result = m_MapService.AddMapTile((int)x, (int)y, data, out reason); |
155 | 155 | ||
156 | if (result) | 156 | if (result) |
157 | return SuccessResult(); | 157 | return SuccessResult(); |
diff --git a/OpenSim/Services/Connectors/Land/LandServicesConnector.cs b/OpenSim/Services/Connectors/Land/LandServicesConnector.cs index 30a73a4..644331a 100644 --- a/OpenSim/Services/Connectors/Land/LandServicesConnector.cs +++ b/OpenSim/Services/Connectors/Land/LandServicesConnector.cs | |||
@@ -78,7 +78,7 @@ namespace OpenSim.Services.Connectors | |||
78 | try | 78 | try |
79 | { | 79 | { |
80 | uint xpos = 0, ypos = 0; | 80 | uint xpos = 0, ypos = 0; |
81 | Utils.LongToUInts(regionHandle, out xpos, out ypos); | 81 | Util.RegionHandleToWorldLoc(regionHandle, out xpos, out ypos); |
82 | GridRegion info = m_GridService.GetRegionByPosition(scopeID, (int)xpos, (int)ypos); | 82 | GridRegion info = m_GridService.GetRegionByPosition(scopeID, (int)xpos, (int)ypos); |
83 | if (info != null) // just to be sure | 83 | if (info != null) // just to be sure |
84 | { | 84 | { |
diff --git a/OpenSim/Services/Connectors/Neighbour/NeighbourServicesConnector.cs b/OpenSim/Services/Connectors/Neighbour/NeighbourServicesConnector.cs index 774fe2a..beead97 100644 --- a/OpenSim/Services/Connectors/Neighbour/NeighbourServicesConnector.cs +++ b/OpenSim/Services/Connectors/Neighbour/NeighbourServicesConnector.cs | |||
@@ -69,7 +69,7 @@ namespace OpenSim.Services.Connectors | |||
69 | public virtual GridRegion HelloNeighbour(ulong regionHandle, RegionInfo thisRegion) | 69 | public virtual GridRegion HelloNeighbour(ulong regionHandle, RegionInfo thisRegion) |
70 | { | 70 | { |
71 | uint x = 0, y = 0; | 71 | uint x = 0, y = 0; |
72 | Utils.LongToUInts(regionHandle, out x, out y); | 72 | Util.RegionHandleToWorldLoc(regionHandle, out x, out y); |
73 | GridRegion regInfo = m_GridService.GetRegionByPosition(thisRegion.ScopeID, (int)x, (int)y); | 73 | GridRegion regInfo = m_GridService.GetRegionByPosition(thisRegion.ScopeID, (int)x, (int)y); |
74 | if ((regInfo != null) && | 74 | if ((regInfo != null) && |
75 | // Don't remote-call this instance; that's a startup hickup | 75 | // Don't remote-call this instance; that's a startup hickup |
diff --git a/OpenSim/Services/GridService/GridService.cs b/OpenSim/Services/GridService/GridService.cs index 9fa2dc5..aa7ffc1 100644 --- a/OpenSim/Services/GridService/GridService.cs +++ b/OpenSim/Services/GridService/GridService.cs | |||
@@ -347,6 +347,11 @@ namespace OpenSim.Services.GridService | |||
347 | return null; | 347 | return null; |
348 | } | 348 | } |
349 | 349 | ||
350 | // Get a region given its base coordinates. | ||
351 | // NOTE: this is NOT 'get a region by some point in the region'. The coordinate MUST | ||
352 | // be the base coordinate of the region. | ||
353 | // The snapping is technically unnecessary but is harmless because regions are always | ||
354 | // multiples of the legacy region size (256). | ||
350 | public GridRegion GetRegionByPosition(UUID scopeID, int x, int y) | 355 | public GridRegion GetRegionByPosition(UUID scopeID, int x, int y) |
351 | { | 356 | { |
352 | int snapX = (int)(x / Constants.RegionSize) * (int)Constants.RegionSize; | 357 | int snapX = (int)(x / Constants.RegionSize) * (int)Constants.RegionSize; |