extent supported number of avatar textures/bakes/wearables, tell viewers about it on lludp RegionHandShake; propagate agenthover; block teleports/crossings based on worn wearables and peer version;

This commit is contained in:
UbitUmarov
2019-09-11 13:51:43 +01:00
parent 6aa369d858
commit 9d6c996570
22 changed files with 441 additions and 412 deletions

View File

@@ -989,11 +989,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
//RegionInfo4 block
//RegionFlagsExtended
zc.AddZeros(1); // we dont have this
//zc.AddByte(1);
//zc.AddUInt64(regionFlags); // we have nothing other base flags
//RegionProtocols
//zc.AddUInt64(0); // bit 0 signals server side texture baking"
//zc.AddZeros(1); // if we dont have this else
zc.AddByte(1);
zc.AddUInt64(regionFlags); // we have nothing other base flags
//RegionProtocols
// bit 0 signals server side texture baking
// bit 63 signals more than 6 baked textures support"
zc.AddUInt64(1UL << 63);
buf.DataLength = zc.Finish();
m_udpServer.SendUDPPacket(m_udpClient, buf, ThrottleOutPacketType.Unknown);
@@ -4434,7 +4436,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
//0xff, 0xff, 0, 1, 158 // ID 158 (low frequency bigendian) zeroencoded
};
public void SendAppearance(UUID targetID, byte[] visualParams, byte[] textureEntry)
public void SendAppearance(UUID targetID, byte[] visualParams, byte[] textureEntry, float hover)
{
// doing post zero encode, because odds of beeing bad are not that low
UDPPacketBuffer buf = m_udpServer.GetNewUDPBuffer(m_udpClient.RemoteEndPoint);
@@ -4469,7 +4471,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// no AppearanceData
data[pos++] = 0;
// no AppearanceHover
data[pos++] = 0;
data[pos++] = 1;
Utils.FloatToBytesSafepos(0, data, pos); pos += 4;
Utils.FloatToBytesSafepos(0, data, pos); pos += 4;
Utils.FloatToBytesSafepos(hover, data, pos); pos += 4;
buf.DataLength = pos;
m_udpServer.SendUDPPacket(m_udpClient, buf, ThrottleOutPacketType.Task | ThrottleOutPacketType.HighPriority, null, false, true);