private OSDMap GetParcelsByRegion(OSDMap map)
{
OSDMap resp = new OSDMap();
resp["Parcels"] = new OSDArray();
resp["Total"] = OSD.FromInteger(0);
IDirectoryServiceConnector directory = DataPlugins.RequestPlugin<IDirectoryServiceConnector>();
if (directory != null && map.ContainsKey("Region") == true)
{
UUID RegionID = UUID.Parse(map["Region"]);
UUID ScopeID = map.ContainsKey("ScopeID") ? UUID.Parse(map["ScopeID"].ToString()) : UUID.Zero;
UUID owner = map.ContainsKey("Owner") ? UUID.Parse(map["Owner"].ToString()) : UUID.Zero;
uint start = map.ContainsKey("Start") ? uint.Parse(map["Start"].ToString()) : 0;
uint count = map.ContainsKey("Count") ? uint.Parse(map["Count"].ToString()) : 10;
ParcelFlags flags = map.ContainsKey("Flags") ? (ParcelFlags)int.Parse(map["Flags"].ToString()) : ParcelFlags.None;
ParcelCategory category = map.ContainsKey("Category") ? (ParcelCategory)uint.Parse(map["Flags"].ToString()) : ParcelCategory.Any;
uint total = directory.GetNumberOfParcelsByRegion(RegionID, owner, flags, category);
if (total > 0)
{
resp["Total"] = OSD.FromInteger((int)total);
if(count == 0){
return resp;
}
List<LandData> parcels = directory.GetParcelsByRegion(start, count, RegionID, owner, flags, category);
OSDArray Parcels = new OSDArray(parcels.Count);
parcels.ForEach(delegate(LandData parcel)
{
Parcels.Add(LandData2WebOSD(parcel));
});
resp["Parcels"] = Parcels;
}
}
return resp;
}