add gridservice GetOnlineRegions()

This commit is contained in:
UbitUmarov
2021-12-07 00:34:40 +00:00
parent 8b28668b28
commit 131455b107
9 changed files with 173 additions and 5 deletions

View File

@@ -790,8 +790,8 @@ namespace OpenSim.Services.GridService
List<GridRegion> ret = new List<GridRegion>();
List<RegionData> regions = m_Database.GetFallbackRegions(scopeID);
if(regions.Count > 0)
{
if (regions.Count > 0)
{
if (regions.Count > 1)
{
regions.Sort(new RegionDataDistanceCompare(x, y));
@@ -800,7 +800,7 @@ namespace OpenSim.Services.GridService
foreach (RegionData r in regions)
{
int rflags = Convert.ToInt32(r.Data["flags"]);
if((rflags & (int)OpenSim.Framework.RegionFlags.Hyperlink) != 0)
if ((rflags & (int)OpenSim.Framework.RegionFlags.Hyperlink) != 0)
continue;
if ((rflags & (int)OpenSim.Framework.RegionFlags.RegionOnline) != 0)
ret.Add(RegionData2RegionInfo(r));
@@ -811,6 +811,33 @@ namespace OpenSim.Services.GridService
return ret;
}
public List<GridRegion> GetOnlineRegions(UUID scopeID, int x, int y, int maxCount)
{
List<GridRegion> ret = new List<GridRegion>();
List<RegionData> regions = m_Database.GetOnlineRegions(scopeID);
if (regions.Count > 0)
{
if (regions.Count > 1)
{
regions.Sort(new RegionDataDistanceCompare(x, y));
}
foreach (RegionData r in regions)
{
int rflags = Convert.ToInt32(r.Data["flags"]);
if ((rflags & (int)OpenSim.Framework.RegionFlags.Hyperlink) != 0)
continue;
ret.Add(RegionData2RegionInfo(r));
if(ret.Count >= maxCount)
break;
}
}
m_log.DebugFormat("[GRID SERVICE]: online returned {0} regions", ret.Count);
return ret;
}
public List<GridRegion> GetHyperlinks(UUID scopeID)
{
List<GridRegion> ret = new List<GridRegion>();