Fix HypergridLinker.Check4096()

Make the optimization with IEnumerable.Except() in Check4096 actually work by providing an appropriate equality definition for GridRegion objects.
0.7-post-fixes
Marck 2010-11-01 13:07:24 +01:00 committed by Diva Canto
parent 880857d8ca
commit fc3e7fe700
1 changed files with 28 additions and 1 deletions

View File

@ -97,7 +97,7 @@ namespace OpenSim.Services.Interfaces
int GetRegionFlags(UUID scopeID, UUID regionID);
}
public class GridRegion
public class GridRegion : Object
{
/// <summary>
@ -225,6 +225,33 @@ namespace OpenSim.Services.Interfaces
EstateOwner = ConvertFrom.EstateOwner;
}
# region Definition of equality
/// <summary>
/// Define equality as two regions having the same, non-zero UUID.
/// </summary>
public bool Equals(GridRegion region)
{
if ((object)region == null)
return false;
// Return true if the non-zero UUIDs are equal:
return (RegionID != UUID.Zero) && RegionID.Equals(region.RegionID);
}
public override bool Equals(Object obj)
{
if (obj == null)
return false;
return Equals(obj as GridRegion);
}
public override int GetHashCode()
{
return RegionID.GetHashCode() ^ TerrainImage.GetHashCode();
}
#endregion
/// <value>
/// This accessor can throw all the exceptions that Dns.GetHostAddresses can throw.
///