Thank you, HomerHorwitz, for a patch that fixes landmark teleport
and about landmarks with the new OMV types.
This commit is contained in:
Melanie Thielker
2008-09-07 20:09:11 +00:00
parent 0c7e87ee5e
commit 58d79b33ff
4 changed files with 52 additions and 33 deletions

View File

@@ -53,7 +53,8 @@ namespace OpenSim.Framework
string[] parts = temp.Split('\n');
int.TryParse(parts[0].Substring(17, 1), out Version);
UUID.TryParse(parts[1].Substring(10, 36), out RegionID);
Vector3.TryParse(parts[2].Substring(10, parts[2].Length - 10), out Position);
// the vector is stored with spaces as separators, not with commas ("10.3 32.5 43" instead of "10.3, 32.5, 43")
Vector3.TryParse(parts[2].Substring(10, parts[2].Length - 10).Replace(" ", ","), out Position);
ulong.TryParse(parts[3].Substring(14, parts[3].Length - 14), out RegionHandle);
}
}

View File

@@ -727,6 +727,21 @@ namespace OpenSim.Framework
return client.Send(url, 6000);
}
/// <summary>
/// Converts a byte array in big endian order into an ulong.
/// </summary>
/// <param name="bytes">
/// The array of bytes
/// </param>
/// <returns>
/// The extracted ulong
/// </returns>
public static ulong BytesToUInt64Big(byte[] bytes) {
if(bytes.Length < 8) return 0;
return ((ulong)bytes[0] << 56) | ((ulong)bytes[1] << 48) | ((ulong)bytes[2] << 40) | ((ulong)bytes[3] << 32) |
((ulong)bytes[4] << 24) | ((ulong)bytes[5] << 16) | ((ulong)bytes[6] << 8) | (ulong)bytes[7];
}
// used for RemoteParcelRequest (for "About Landmark")
public static UUID BuildFakeParcelID(ulong regionHandle, uint x, uint y) {
byte[] bytes = {