Parcourir la source

varregion: enable teleporting to a varregion by clicking on the map and
pressing the 'teleport' button.
This commit adds returning region map info for all the subregions of a
varregion. This also handles the selection of the extra region and then
the displacement of the postion so the teleport is to the correct location.

Robert Adams il y a 10 ans
Parent
commit
49af6b53e7

+ 18 - 0
OpenSim/Framework/MapBlockData.cs

@@ -27,6 +27,7 @@
 
 using System;
 using OpenMetaverse;
+using OpenMetaverse.StructuredData;
 
 namespace OpenSim.Framework
 {
@@ -40,9 +41,26 @@ namespace OpenSim.Framework
         public byte WaterHeight;
         public ushort X;
         public ushort Y;
+        public ushort SizeX;
+        public ushort SizeY;
 
         public MapBlockData()
         {
         }
+
+        public OSDMap ToOSD()
+        {
+            OSDMap map = new OSDMap();
+            map["X"] = X;
+            map["Y"] = Y;
+            map["SizeX"] = SizeX;
+            map["SizeY"] = SizeY;
+            map["Name"] = Name;
+            map["Access"] = Access;
+            map["RegionFlags"] = RegionFlags;
+            map["WaterHeight"] = WaterHeight;
+            map["MapImageID"] = MapImageId;
+            return map;
+        }
     }
 }

+ 33 - 0
OpenSim/Framework/MapItemReplyStruct.cs

@@ -26,6 +26,7 @@
  */
 
 using OpenMetaverse;
+using OpenMetaverse.StructuredData;
 
 namespace OpenSim.Framework
 {
@@ -37,5 +38,37 @@ namespace OpenSim.Framework
         public int Extra;
         public int Extra2;
         public string name;
+
+        public mapItemReply(uint pX, uint pY, UUID pId, string pName, int pExt1, int pExt2)
+        {
+            x = pX;
+            y = pY;
+            id = pId;
+            name = pName;
+            Extra = pExt1;
+            Extra2 = pExt2;
+        }
+
+        public OSDMap ToOSD()
+        {
+            OSDMap map = new OSDMap();
+            map["X"] = OSD.FromInteger((int)x);
+            map["Y"] = OSD.FromInteger((int)y);
+            map["ID"] = OSD.FromUUID(id);
+            map["Name"] = OSD.FromString(name);
+            map["Extra"] = OSD.FromInteger(Extra);
+            map["Extra2"] = OSD.FromInteger(Extra2);
+            return map;
+        }
+        
+        public void FromOSD(OSDMap map)
+        {
+            x = (uint) map["X"].AsInteger();
+            y = (uint) map["Y"].AsInteger();
+            id = map["ID"].AsUUID();
+            Extra = map["Extra"].AsInteger();
+            Extra2 = map["Extra2"].AsInteger();
+            name = map["Name"].AsString();
+        }
     }
 }

+ 28 - 3
OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs

@@ -523,9 +523,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
             ScenePresence sp, ulong regionHandle, Vector3 position,
             Vector3 lookAt, uint teleportFlags, out GridRegion finalDestination)
         {
-            uint x = 0, y = 0;
-            Util.RegionHandleToWorldLoc(regionHandle, out x, out y);
-            GridRegion reg = Scene.GridService.GetRegionByPosition(sp.Scene.RegionInfo.ScopeID, (int)x, (int)y);
+            // Get destination region taking into account that the address could be an offset
+            //     region inside a varregion.
+            GridRegion reg = GetTeleportDestinationRegion(sp.Scene.GridService, sp.Scene.RegionInfo.ScopeID, regionHandle, ref position);
 
             if (reg != null)
             {
@@ -588,6 +588,31 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
             }
         }
 
+        // The teleport address could be an address in a subregion of a larger varregion.
+        // Find the real base region and adjust the teleport location to account for the
+        //    larger region.
+        private GridRegion GetTeleportDestinationRegion(IGridService gridService, UUID scope, ulong regionHandle, ref Vector3 position)
+        {
+            uint x = 0, y = 0;
+            Util.RegionHandleToWorldLoc(regionHandle, out x, out y);
+
+            // Compute the world location we're teleporting to
+            double worldX = (double)x + position.X;
+            double worldY = (double)y + position.Y;
+
+            // Find the region that contains the position
+            GridRegion reg = GetRegionContainingWorldLocation(gridService, scope, worldX, worldY);
+
+            if (reg != null)
+            {
+                // modify the position for the offset into the actual region returned
+                position.X += x - reg.RegionLocX;
+                position.Y += y - reg.RegionLocY;
+            }
+
+            return reg;
+        }
+
         // Nothing to validate here
         protected virtual bool ValidateGenericConditions(ScenePresence sp, GridRegion reg, GridRegion finalDestination, uint teleportFlags, out string reason)
         {

+ 1 - 1
OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs

@@ -549,7 +549,7 @@ namespace OpenSim.Region.CoreModules.World.LegacyMap
                                         z_localIDs.Add(part.LocalId);
                                         z_sortheights.Add(pos.Z);
 
-                                        for (int wx = mapdrawstartX; wx < mapdrawendX; wx++)
+                                        // for (int wx = mapdrawstartX; wx < mapdrawendX; wx++)
                                         // {
                                         //     for (wy = mapdrawstartY; wy < mapdrawendY; wy++)
                                         //     {

+ 139 - 78
OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs

@@ -59,8 +59,8 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
     [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "WorldMapModule")]
     public class WorldMapModule : INonSharedRegionModule, IWorldMapModule
     {
-        private static readonly ILog m_log =
-            LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+        private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+        private static string LogHeader = "[WORLD MAP]";
 
         private static readonly string DEFAULT_WORLD_MAP_EXPORT_PATH = "exportmap.jpg";
         private static readonly UUID STOP_UUID = UUID.Random();
@@ -290,8 +290,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
                                     (int)Util.RegionToWorldLoc(m_scene.RegionInfo.RegionLocY + 8) );
                         foreach (GridRegion r in regions)
                         {
-                            MapBlockData block = new MapBlockData();
-                            MapBlockFromGridRegion(block, r, 0);
+                            MapBlockData block = MapBlockFromGridRegion(r, 0);
                             mapBlocks.Add(block);
                         }
                         avatarPresence.ControllingClient.SendMapBlock(mapBlocks, 0);
@@ -412,23 +411,22 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
             uint xstart = 0;
             uint ystart = 0;
             Util.RegionHandleToWorldLoc(m_scene.RegionInfo.RegionHandle, out xstart, out ystart);
-            if (itemtype == 6) // Service 6 right now (MAP_ITEM_AGENTS_LOCATION; green dots)
+            if (itemtype == (int)GridItemType.AgentLocations)
             {
                 if (regionhandle == 0 || regionhandle == m_scene.RegionInfo.RegionHandle)
                 {
-                    // Local Map Item Request
+                    // Just requesting map info about the current, local region
                     int tc = Environment.TickCount;
                     List<mapItemReply> mapitems = new List<mapItemReply>();
                     mapItemReply mapitem = new mapItemReply();
                     if (m_scene.GetRootAgentCount() <= 1)
                     {
-                        mapitem = new mapItemReply();
-                        mapitem.x = (uint)(xstart + 1);
-                        mapitem.y = (uint)(ystart + 1);
-                        mapitem.id = UUID.Zero;
-                        mapitem.name = Util.Md5Hash(m_scene.RegionInfo.RegionName + tc.ToString());
-                        mapitem.Extra = 0;
-                        mapitem.Extra2 = 0;
+                        mapitem = new mapItemReply(
+                                        xstart + 1,
+                                        ystart + 1,
+                                        UUID.Zero,
+                                        Util.Md5Hash(m_scene.RegionInfo.RegionName + tc.ToString()),
+                                        0, 0);
                         mapitems.Add(mapitem);
                     }
                     else
@@ -438,13 +436,12 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
                             // Don't send a green dot for yourself
                             if (sp.UUID != remoteClient.AgentId)
                             {
-                                mapitem = new mapItemReply();
-                                mapitem.x = (uint)(xstart + sp.AbsolutePosition.X);
-                                mapitem.y = (uint)(ystart + sp.AbsolutePosition.Y);
-                                mapitem.id = UUID.Zero;
-                                mapitem.name = Util.Md5Hash(m_scene.RegionInfo.RegionName + tc.ToString());
-                                mapitem.Extra = 1;
-                                mapitem.Extra2 = 0;
+                                mapitem = new mapItemReply(
+                                        xstart + (uint)sp.AbsolutePosition.X,
+                                        ystart + (uint)sp.AbsolutePosition.Y,
+                                        UUID.Zero,
+                                        Util.Md5Hash(m_scene.RegionInfo.RegionName + tc.ToString()),
+                                        1, 0);
                                 mapitems.Add(mapitem);
                             }
                         });
@@ -459,7 +456,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
                     RequestMapItems("",remoteClient.AgentId,flags,EstateID,godlike,itemtype,regionhandle);
                 }
             }
-            else if (itemtype == 7) // Service 7 (MAP_ITEM_LAND_FOR_SALE)
+            else if (itemtype == (int)GridItemType.LandForSale) // Service 7 (MAP_ITEM_LAND_FOR_SALE)
             {
                 if (regionhandle == 0 || regionhandle == m_scene.RegionInfo.RegionHandle)
                 {
@@ -489,14 +486,14 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
                                 float x = (min.X+max.X)/2;
                                 float y = (min.Y+max.Y)/2;
 
-                                mapitem = new mapItemReply();
-                                mapitem.x = (uint)(xstart + x);
-                                mapitem.y = (uint)(ystart + y);
-                                // mapitem.z = (uint)m_scene.GetGroundHeight(x,y);
-                                mapitem.id = parcel.GlobalID;
-                                mapitem.name = parcel.Name;
-                                mapitem.Extra = parcel.Area;
-                                mapitem.Extra2 = parcel.SalePrice;
+                                mapitem = new mapItemReply(
+                                                xstart + (uint)x,
+                                                ystart + (uint)y,
+                                                parcel.GlobalID,
+                                                parcel.Name,
+                                                parcel.Area,
+                                                parcel.SalePrice
+                                );
                                 mapitems.Add(mapitem);
                             }
                         }
@@ -511,7 +508,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
                     RequestMapItems("",remoteClient.AgentId,flags,EstateID,godlike,itemtype,regionhandle);
                 }
             }
-            else if (itemtype == 1) // Service 1 (MAP_ITEM_TELEHUB)
+            else if (itemtype == (int)GridItemType.Telehub) // Service 1 (MAP_ITEM_TELEHUB)
             {
                 if (regionhandle == 0 || regionhandle == m_scene.RegionInfo.RegionHandle)
                 {
@@ -521,13 +518,14 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
                     SceneObjectGroup sog = m_scene.GetSceneObjectGroup(m_scene.RegionInfo.RegionSettings.TelehubObject);
                     if (sog != null)
                     {
-                        mapitem = new mapItemReply();
-                        mapitem.x = (uint)(xstart + sog.AbsolutePosition.X);
-                        mapitem.y = (uint)(ystart + sog.AbsolutePosition.Y);
-                        mapitem.id = UUID.Zero;
-                        mapitem.name = sog.Name;
-                        mapitem.Extra = 0; // color (not used)
-                        mapitem.Extra2 = 0; // 0 = telehub / 1 = infohub
+                        mapitem = new mapItemReply(
+                                            xstart + (uint)sog.AbsolutePosition.X,
+                                            ystart + (uint)sog.AbsolutePosition.Y,
+                                            UUID.Zero,
+                                            sog.Name,
+                                            0,  // color (not used)
+                                            0   // 0 = telehub / 1 = infohub
+                        );
                         mapitems.Add(mapitem);
 
                         remoteClient.SendMapItemReply(mapitems.ToArray(), itemtype, flags);
@@ -677,19 +675,14 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
                             {
                                 OSDMap mapitem = (OSDMap)itemarray[i];
                                 mapItemReply mi = new mapItemReply();
-                                mi.x = (uint)mapitem["X"].AsInteger();
-                                mi.y = (uint)mapitem["Y"].AsInteger();
-                                mi.id = mapitem["ID"].AsUUID();
-                                mi.Extra = mapitem["Extra"].AsInteger();
-                                mi.Extra2 = mapitem["Extra2"].AsInteger();
-                                mi.name = mapitem["Name"].AsString();
+                                mi.FromOSD(mapitem);
                                 returnitems.Add(mi);
                             }
                             av.ControllingClient.SendMapItemReply(returnitems.ToArray(), mrs.itemtype, mrs.flags);
                         }
 
                         // Service 7 (MAP_ITEM_LAND_FOR_SALE)
-                        uint itemtype = 7;
+                        uint itemtype = (uint)GridItemType.LandForSale;
 
                         if (response.ContainsKey(itemtype.ToString()))
                         {
@@ -699,19 +692,14 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
                             {
                                 OSDMap mapitem = (OSDMap)itemarray[i];
                                 mapItemReply mi = new mapItemReply();
-                                mi.x = (uint)mapitem["X"].AsInteger();
-                                mi.y = (uint)mapitem["Y"].AsInteger();
-                                mi.id = mapitem["ID"].AsUUID();
-                                mi.Extra = mapitem["Extra"].AsInteger();
-                                mi.Extra2 = mapitem["Extra2"].AsInteger();
-                                mi.name = mapitem["Name"].AsString();
+                                mi.FromOSD(mapitem);
                                 returnitems.Add(mi);
                             }
                             av.ControllingClient.SendMapItemReply(returnitems.ToArray(), itemtype, mrs.flags);
                         }
 
                         // Service 1 (MAP_ITEM_TELEHUB)
-                        itemtype = 1;
+                        itemtype = (uint)GridItemType.Telehub;
 
                         if (response.ContainsKey(itemtype.ToString()))
                         {
@@ -721,12 +709,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
                             {
                                 OSDMap mapitem = (OSDMap)itemarray[i];
                                 mapItemReply mi = new mapItemReply();
-                                mi.x = (uint)mapitem["X"].AsInteger();
-                                mi.y = (uint)mapitem["Y"].AsInteger();
-                                mi.id = mapitem["ID"].AsUUID();
-                                mi.Extra = mapitem["Extra"].AsInteger();
-                                mi.Extra2 = mapitem["Extra2"].AsInteger();
-                                mi.name = mapitem["Name"].AsString();
+                                mi.FromOSD(mapitem);
                                 returnitems.Add(mi);
                             }
                             av.ControllingClient.SendMapItemReply(returnitems.ToArray(), itemtype, mrs.flags);
@@ -1008,7 +991,6 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
         /// <param name="maxY"></param>
         public virtual void RequestMapBlocks(IClientAPI remoteClient, int minX, int minY, int maxX, int maxY, uint flag)
         {
-            //m_log.ErrorFormat("[YYY] RequestMapBlocks {0}={1}={2}={3} {4}", minX, minY, maxX, maxY, flag);
             if ((flag & 0x10000) != 0)  // user clicked on qthe map a tile that isn't visible
             {
                 List<MapBlockData> response = new List<MapBlockData>();
@@ -1020,6 +1002,8 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
                                     (int)Util.RegionToWorldLoc((uint)minX), (int)Util.RegionToWorldLoc((uint)maxX),
                                     (int)Util.RegionToWorldLoc((uint)minY), (int)Util.RegionToWorldLoc((uint)maxY) );
 
+                m_log.DebugFormat("[WORLD MAP MODULE] RequestMapBlocks min=<{0},{1}>, max=<{2},{3}>, flag={4}, cntFound={5}",
+                                            minX, minY, maxX, maxY, flag.ToString("X"), regions.Count);
                 if (regions != null)
                 {
                     foreach (GridRegion r in regions)
@@ -1028,9 +1012,11 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
                             && r.RegionLocY == Util.RegionToWorldLoc((uint)minY) )
                         {
                             // found it => add it to response
-                            MapBlockData block = new MapBlockData();
-                            MapBlockFromGridRegion(block, r, flag);
-                            response.Add(block);
+                            // Version 2 viewers can handle the larger regions
+                            if ((flag & 2) == 2)
+                                response.AddRange(Map2BlockFromGridRegion(r, flag));
+                            else
+                                response.Add(MapBlockFromGridRegion(r, flag));
                             break;
                         }
                     }
@@ -1042,7 +1028,8 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
                     MapBlockData block = new MapBlockData();
                     block.X = (ushort)minX;
                     block.Y = (ushort)minY;
-                    block.Access = 254; // means 'simulator is offline'
+                    block.Access = (byte)SimAccess.Down; // means 'simulator is offline'
+                    // block.Access = (byte)SimAccess.NonExistant;
                     response.Add(block);
                 }
                 // The lower 16 bits are an unsigned int16
@@ -1061,37 +1048,110 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
             List<GridRegion> regions = m_scene.GridService.GetRegionRange(m_scene.RegionInfo.ScopeID,
                         (int)Util.RegionToWorldLoc((uint)(minX - 4)), (int)Util.RegionToWorldLoc((uint)(maxX + 4)),
                         (int)Util.RegionToWorldLoc((uint)(minY - 4)), (int)Util.RegionToWorldLoc((uint)(maxY + 4)) );
+            m_log.DebugFormat("{0} GetAndSendBlocks. min=<{1},{2}>, max=<{3},{4}>, cntFound={5}",
+                                        LogHeader, minX, minY, maxX, maxY, regions.Count);
             foreach (GridRegion r in regions)
             {
-                MapBlockData block = new MapBlockData();
-                MapBlockFromGridRegion(block, r, flag);
-                mapBlocks.Add(block);
+                // Version 2 viewers can handle the larger regions
+                if ((flag & 2) == 2)
+                    mapBlocks.AddRange(Map2BlockFromGridRegion(r, flag));
+                else
+                    mapBlocks.Add(MapBlockFromGridRegion(r, flag));
             }
             remoteClient.SendMapBlock(mapBlocks, flag & 0xffff);
 
             return mapBlocks;
         }
 
-        protected void MapBlockFromGridRegion(MapBlockData block, GridRegion r, uint flag)
+        // Fill a passed MapBlockData from a GridRegion
+        protected MapBlockData MapBlockFromGridRegion(GridRegion r, uint flag)
         {
+            MapBlockData block = new MapBlockData();
+
             block.Access = r.Access;
             switch (flag & 0xffff)
             {
-            case 0:
-                block.MapImageId = r.TerrainImage;
-                break;
-            case 2:
-                block.MapImageId = r.ParcelImage;
-                break;
-            default:
-                block.MapImageId = UUID.Zero;
-                break;
+                case 0:
+                    block.MapImageId = r.TerrainImage;
+                    break;
+                case 2:
+                    block.MapImageId = r.ParcelImage;
+                    break;
+                default:
+                    block.MapImageId = UUID.Zero;
+                    break;
             }
             block.Name = r.RegionName;
             block.X = (ushort)Util.WorldToRegionLoc((uint)r.RegionLocX);
             block.Y = (ushort)Util.WorldToRegionLoc((uint)r.RegionLocY);
+            block.SizeX = (ushort) r.RegionSizeX;
+            block.SizeY = (ushort) r.RegionSizeY;
+
+            return block;
         }
 
+        protected List<MapBlockData> Map2BlockFromGridRegion(GridRegion r, uint flag)
+        {
+            List<MapBlockData> blocks = new List<MapBlockData>();
+            MapBlockData block = new MapBlockData();
+            if (r == null)
+            {
+                block.Access = (byte)SimAccess.Down;
+                block.MapImageId = UUID.Zero;
+                blocks.Add(block);
+            }
+            else
+            {
+                block.Access = r.Access;
+                switch (flag & 0xffff)
+                {
+                    case 0:
+                        block.MapImageId = r.TerrainImage;
+                        break;
+                    case 2:
+                        block.MapImageId = r.ParcelImage;
+                        break;
+                    default:
+                        block.MapImageId = UUID.Zero;
+                        break;
+                }
+                block.Name = r.RegionName;
+                block.X = (ushort)(r.RegionLocX / Constants.RegionSize);
+                block.Y = (ushort)(r.RegionLocY / Constants.RegionSize);
+                block.SizeX = (ushort)r.RegionSizeX;
+                block.SizeY = (ushort)r.RegionSizeY;
+                blocks.Add(block);
+                // If these are larger than legacy regions, create fake map entries for the covered
+                //    regions. The map system only does legacy sized regions so we have to fake map
+                //    entries for all the covered regions.
+                if (r.RegionSizeX > Constants.RegionSize || r.RegionSizeY > Constants.RegionSize)
+                {
+                    for (int x = 0; x < r.RegionSizeX / Constants.RegionSize; x++)
+                    {
+                        for (int y = 0; y < r.RegionSizeY / Constants.RegionSize; y++)
+                        {
+                            if (x == 0 && y == 0)
+                                continue;
+                            block = new MapBlockData
+                                        {
+                                            Access = r.Access,
+                                            MapImageId = r.TerrainImage,
+                                            Name = r.RegionName,
+                                            X = (ushort)((r.RegionLocX / Constants.RegionSize) + x),
+                                            Y = (ushort)((r.RegionLocY / Constants.RegionSize) + y),
+                                            SizeX = (ushort)r.RegionSizeX,
+                                            SizeY = (ushort)r.RegionSizeY
+                                        };
+                            //Child piece, so ignore it
+                            blocks.Add(block);
+                        }
+                    }
+                }
+            }
+            return blocks;
+        }
+
+
         public Hashtable OnHTTPThrottled(Hashtable keysvals)
         {
             Hashtable reply = new Hashtable();
@@ -1229,8 +1289,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
 
             foreach (GridRegion r in regions)
             {
-                MapBlockData mapBlock = new MapBlockData();
-                MapBlockFromGridRegion(mapBlock, r, 0);
+                MapBlockData mapBlock = MapBlockFromGridRegion(r, 0);
                 AssetBase texAsset = m_scene.AssetService.Get(mapBlock.MapImageId.ToString());
 
                 if (texAsset != null)
@@ -1291,7 +1350,9 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
             uint xstart = 0;
             uint ystart = 0;
 
-            Utils.LongToUInts(m_scene.RegionInfo.RegionHandle,out xstart,out ystart);
+            Util.RegionHandleToWorldLoc(m_scene.RegionInfo.RegionHandle,out xstart,out ystart);
+            // m_log.DebugFormat("{0} HandleRemoteMapItemRequest. loc=<{1},{2}>",
+            //             LogHeader, Util.WorldToRegionLoc(xstart), Util.WorldToRegionLoc(ystart));
 
             // Service 6 (MAP_ITEM_AGENTS_LOCATION; green dots)
 

+ 2 - 1
OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs

@@ -48,6 +48,7 @@ namespace OpenSim.Server.Handlers.Grid
     public class GridServerPostHandler : BaseStreamHandler
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+        private static string LogHeader = "[GRID HANDLER]";
 
         private IGridService m_GridService;
 
@@ -281,8 +282,8 @@ namespace OpenSim.Server.Handlers.Grid
             else
                 m_log.WarnFormat("[GRID HANDLER]: no Y in request to get region by position");
 
+            // m_log.DebugFormat("{0} GetRegionByPosition: loc=<{1},{2}>", LogHeader, x, y);
             GridRegion rinfo = m_GridService.GetRegionByPosition(scopeID, x, y);
-            //m_log.DebugFormat("[GRID HANDLER]: neighbours for region {0}: {1}", regionID, rinfos.Count);
 
             Dictionary<string, object> result = new Dictionary<string, object>();
             if (rinfo == null)