make a bit more use of it
parent
8d8ead9776
commit
86d8f9963c
|
@ -1045,17 +1045,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
//setup header
|
//setup header
|
||||||
Buffer.BlockCopy(ChatFromSimulatorHeader, 0, data, 0, 10);
|
Buffer.BlockCopy(ChatFromSimulatorHeader, 0, data, 0, 10);
|
||||||
|
|
||||||
byte[] fname = Util.StringToBytes256(fromName);
|
|
||||||
int len = fname.Length;
|
|
||||||
int pos = 11;
|
int pos = 11;
|
||||||
if (len == 0)
|
int len = Util.osUTF8Getbytes(fromName, data, 11, 255, true);
|
||||||
data[10] = 0;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
data[10] = (byte)len;
|
data[10] = (byte)len;
|
||||||
Buffer.BlockCopy(fname, 0, data, 11, len);
|
if (len > 0)
|
||||||
pos += len;
|
pos += len;
|
||||||
}
|
|
||||||
|
|
||||||
sourceID.ToBytes(data, pos); pos += 16;
|
sourceID.ToBytes(data, pos); pos += 16;
|
||||||
ownerID.ToBytes(data, pos); pos += 16;
|
ownerID.ToBytes(data, pos); pos += 16;
|
||||||
|
@ -1133,14 +1127,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
Utils.UIntToBytesSafepos(im.timestamp, data, pos); pos += 4;
|
Utils.UIntToBytesSafepos(im.timestamp, data, pos); pos += 4;
|
||||||
|
|
||||||
byte[] tmp = Util.StringToBytes256(im.fromAgentName);
|
int len = Util.osUTF8Getbytes(im.fromAgentName, data, pos + 1, 255, true);
|
||||||
int len = tmp.Length;
|
|
||||||
data[pos++] = (byte)len;
|
data[pos++] = (byte)len;
|
||||||
if (len > 0)
|
if (len > 0)
|
||||||
Buffer.BlockCopy(tmp, 0, data, pos, len); pos += len;
|
pos += len;
|
||||||
|
|
||||||
tmp = Util.StringToBytes1024(im.message);
|
len = Util.osUTF8Getbytes(im.message, data, pos + 2, 1024, true);
|
||||||
len = tmp.Length;
|
|
||||||
if (len == 0)
|
if (len == 0)
|
||||||
{
|
{
|
||||||
data[pos++] = 0;
|
data[pos++] = 0;
|
||||||
|
@ -1150,10 +1142,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
{
|
{
|
||||||
data[pos++] = (byte)len;
|
data[pos++] = (byte)len;
|
||||||
data[pos++] = (byte)(len >> 8);
|
data[pos++] = (byte)(len >> 8);
|
||||||
Buffer.BlockCopy(tmp, 0, data, pos, len); pos += len;
|
pos += len;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp = im.binaryBucket;
|
byte[] tmp = im.binaryBucket;
|
||||||
if(tmp == null)
|
if(tmp == null)
|
||||||
{
|
{
|
||||||
data[pos++] = 0;
|
data[pos++] = 0;
|
||||||
|
@ -1210,11 +1202,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
int pos = 58;
|
int pos = 58;
|
||||||
|
|
||||||
//method block
|
//method block
|
||||||
byte[] tmp = Util.StringToBytes256(method);
|
int len = Util.osUTF8Getbytes(method, data, pos + 1, 255, true);
|
||||||
int len = tmp.Length;
|
|
||||||
data[pos++] = (byte)len;
|
data[pos++] = (byte)len;
|
||||||
if (len > 0)
|
if (len > 0)
|
||||||
Buffer.BlockCopy(tmp, 0, data, pos, len); pos += len;
|
pos += len;
|
||||||
|
|
||||||
invoice.ToBytes(data, pos); pos += 16;
|
invoice.ToBytes(data, pos); pos += 16;
|
||||||
|
|
||||||
//ParamList block
|
//ParamList block
|
||||||
|
@ -1233,10 +1225,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for(int indx = 0; indx < message.Count; ++indx)
|
for(int indx = 0; indx < message.Count; ++indx)
|
||||||
{
|
{
|
||||||
tmp = Util.StringToBytes256(message[indx]);
|
len = Util.osUTF8Getbytes(message[indx], data, pos + 1, 255, true);
|
||||||
len = tmp.Length;
|
data[pos++] = (byte)len;
|
||||||
|
if (len > 0)
|
||||||
|
pos += len;
|
||||||
|
|
||||||
if (pos + len >= LLUDPServer.MAXPAYLOAD)
|
if (pos > LLUDPServer.MAXPAYLOAD - 100)
|
||||||
{
|
{
|
||||||
data[countpos] = (byte)count;
|
data[countpos] = (byte)count;
|
||||||
buf.DataLength = pos;
|
buf.DataLength = pos;
|
||||||
|
@ -1252,10 +1246,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
++count;
|
++count;
|
||||||
|
|
||||||
data[pos++] = (byte)len;
|
|
||||||
if (len > 0)
|
|
||||||
Buffer.BlockCopy(tmp, 0, data, pos, len); pos += len;
|
|
||||||
}
|
}
|
||||||
if (count > 0)
|
if (count > 0)
|
||||||
{
|
{
|
||||||
|
@ -1282,11 +1272,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
int pos = 58;
|
int pos = 58;
|
||||||
|
|
||||||
//method block
|
//method block
|
||||||
byte[] tmp = Util.StringToBytes256(method);
|
int len = Util.osUTF8Getbytes(method, data, pos + 1, 255, true);
|
||||||
int len = tmp.Length;
|
|
||||||
data[pos++] = (byte)len;
|
data[pos++] = (byte)len;
|
||||||
if (len > 0)
|
if (len > 0)
|
||||||
Buffer.BlockCopy(tmp, 0, data, pos, len); pos += len;
|
pos += len;
|
||||||
|
|
||||||
invoice.ToBytes(data, pos); pos += 16;
|
invoice.ToBytes(data, pos); pos += 16;
|
||||||
|
|
||||||
//ParamList block
|
//ParamList block
|
||||||
|
@ -1957,10 +1947,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
mr.id.ToBytes(data, pos); pos += 16;
|
mr.id.ToBytes(data, pos); pos += 16;
|
||||||
Utils.IntToBytesSafepos(mr.Extra, data, pos); pos += 4;
|
Utils.IntToBytesSafepos(mr.Extra, data, pos); pos += 4;
|
||||||
Utils.IntToBytesSafepos(mr.Extra2, data, pos); pos += 4;
|
Utils.IntToBytesSafepos(mr.Extra2, data, pos); pos += 4;
|
||||||
byte[] itemName = Util.StringToBytes256(mr.name);
|
|
||||||
data[pos++] = (byte)itemName.Length;
|
int len = Util.osUTF8Getbytes(mr.name, data, pos + 1, 255, true);
|
||||||
if (itemName.Length > 0)
|
data[pos++] = (byte)len;
|
||||||
Buffer.BlockCopy(itemName, 0, data, pos, itemName.Length); pos += itemName.Length;
|
if (len > 0)
|
||||||
|
pos += len;
|
||||||
|
|
||||||
if (pos < capacity)
|
if (pos < capacity)
|
||||||
++count;
|
++count;
|
||||||
|
@ -2053,10 +2044,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
Utils.UInt16ToBytes(md.X, data, pos); pos += 2;
|
Utils.UInt16ToBytes(md.X, data, pos); pos += 2;
|
||||||
Utils.UInt16ToBytes(md.Y, data, pos); pos += 2;
|
Utils.UInt16ToBytes(md.Y, data, pos); pos += 2;
|
||||||
byte[] regionName = Util.StringToBytes256(md.Name);
|
|
||||||
data[pos++] = (byte)regionName.Length;
|
int len = Util.osUTF8Getbytes(md.Name, data, pos + 1, 255, true);
|
||||||
if(regionName.Length > 0)
|
data[pos++] = (byte)len;
|
||||||
Buffer.BlockCopy(regionName, 0, data, pos, regionName.Length); pos += regionName.Length;
|
if (len > 0)
|
||||||
|
pos += len;
|
||||||
|
|
||||||
data[pos++] = md.Access;
|
data[pos++] = md.Access;
|
||||||
Utils.UIntToBytesSafepos(md.RegionFlags, data, pos); pos += 4;
|
Utils.UIntToBytesSafepos(md.RegionFlags, data, pos); pos += 4;
|
||||||
data[pos++] = md.WaterHeight;
|
data[pos++] = md.WaterHeight;
|
||||||
|
@ -13021,7 +13014,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
locy = (float)(Convert.ToDouble(args[1]) - (double)regionY);
|
locy = (float)(Convert.ToDouble(args[1]) - (double)regionY);
|
||||||
locz = Convert.ToSingle(args[2]);
|
locz = Convert.ToSingle(args[2]);
|
||||||
|
|
||||||
OnAutoPilotGo?.Invoke(new Vector3(locx, locy, locz), false, false);
|
OnAutoPilotGo?.Invoke(new Vector3(locx, locy, locz), false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Reference in New Issue