region handle things

This commit is contained in:
UbitUmarov
2021-09-16 18:39:32 +01:00
parent 6acf368f5b
commit e8735b6997
2 changed files with 47 additions and 5 deletions

View File

@@ -446,6 +446,48 @@ namespace OpenSim.Framework
return regionCoord << 8;
}
public static bool CompareRegionHandles(ulong handle, Vector3 handleOffset, RegionInfo region, out Vector3 regionOffset)
{
RegionHandleToWorldLoc(handle, out uint uhX, out uint uhY);
double px = uhX - region.WorldLocX + (double)handleOffset.X;
double py = uhY - region.WorldLocY + (double)handleOffset.Y;
if (px >= 0 && px < region.RegionSizeX && py >= 0 && py < region.RegionSizeY)
{
regionOffset = new Vector3((float)px, (float)py, handleOffset.Z);
return true;
}
regionOffset = Vector3.Zero;
return false;
}
public static bool CompareRegionHandler(ulong handle, Vector3 handleOffset, ulong regionhandle, int regionSizeX, int regionSizeY, out Vector3 regionOffset)
{
RegionHandleToWorldLoc(handle, out uint uhX, out uint uhY);
RegionHandleToWorldLoc(regionhandle, out uint urX, out uint urY);
double px = uhX - urX + (double)handleOffset.X;
double py = uhY - urY + (double)handleOffset.Y;
if (px >= 0 && px < regionSizeX && py >= 0 && py < regionSizeY)
{
regionOffset = new Vector3((float)px, (float)py, handleOffset.Z);
return true;
}
regionOffset = Vector3.Zero;
return false;
}
public static bool CompareRegionHandlers(ulong handle, Vector3 handleOffset, int regionX, int regionY, int regionSizeX, int regionSizeY, out Vector3 regionOffset)
{
RegionHandleToWorldLoc(handle, out uint uhX, out uint uhY);
double px = uhX - regionX + (double)handleOffset.X;
double py = uhY - regionY + (double)handleOffset.Y;
if (px >= 0 && px < regionSizeX && py >= 0 && py < regionSizeY)
{
regionOffset = new Vector3((float)px, (float)py, handleOffset.Z);
return true;
}
regionOffset = Vector3.Zero;
return false;
}
public static bool checkServiceURI(string uristr, out string serviceURI, out string serviceHost, out string serviceIPstr)
{