Change land packet sending back to what the careminster release used
to use, remove the silly spiral stuff. Revert to double packets for improved user experienceavinationmerge
parent
a49c524c9e
commit
b9546d12f2
OpenSim/Region/ClientStack/LindenUDP
|
@ -785,6 +785,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
public virtual void SendLayerData(float[] map)
|
public virtual void SendLayerData(float[] map)
|
||||||
{
|
{
|
||||||
Util.FireAndForget(DoSendLayerData, map);
|
Util.FireAndForget(DoSendLayerData, map);
|
||||||
|
|
||||||
|
// Send it sync, and async. It's not that much data
|
||||||
|
// and it improves user experience just so much!
|
||||||
|
DoSendLayerData(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -797,16 +801,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//for (int y = 0; y < 16; y++)
|
for (int y = 0; y < 16; y++)
|
||||||
//{
|
{
|
||||||
// for (int x = 0; x < 16; x++)
|
for (int x = 0; x < 16; x+=4)
|
||||||
// {
|
{
|
||||||
// SendLayerData(x, y, map);
|
SendLayerPacket(x, y, map);
|
||||||
// }
|
}
|
||||||
//}
|
}
|
||||||
|
|
||||||
// Send LayerData in a spiral pattern. Fun!
|
|
||||||
SendLayerTopRight(map, 0, 0, 15, 15);
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@ -814,51 +815,35 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SendLayerTopRight(float[] map, int x1, int y1, int x2, int y2)
|
|
||||||
{
|
|
||||||
// Row
|
|
||||||
for (int i = x1; i <= x2; i++)
|
|
||||||
SendLayerData(i, y1, map);
|
|
||||||
|
|
||||||
// Column
|
|
||||||
for (int j = y1 + 1; j <= y2; j++)
|
|
||||||
SendLayerData(x2, j, map);
|
|
||||||
|
|
||||||
if (x2 - x1 > 0)
|
|
||||||
SendLayerBottomLeft(map, x1, y1 + 1, x2 - 1, y2);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SendLayerBottomLeft(float[] map, int x1, int y1, int x2, int y2)
|
|
||||||
{
|
|
||||||
// Row in reverse
|
|
||||||
for (int i = x2; i >= x1; i--)
|
|
||||||
SendLayerData(i, y2, map);
|
|
||||||
|
|
||||||
// Column in reverse
|
|
||||||
for (int j = y2 - 1; j >= y1; j--)
|
|
||||||
SendLayerData(x1, j, map);
|
|
||||||
|
|
||||||
if (x2 - x1 > 0)
|
|
||||||
SendLayerTopRight(map, x1 + 1, y1, x2, y2 - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sends a set of four patches (x, x+1, ..., x+3) to the client
|
/// Sends a set of four patches (x, x+1, ..., x+3) to the client
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="map">heightmap</param>
|
/// <param name="map">heightmap</param>
|
||||||
/// <param name="px">X coordinate for patches 0..12</param>
|
/// <param name="px">X coordinate for patches 0..12</param>
|
||||||
/// <param name="py">Y coordinate for patches 0..15</param>
|
/// <param name="py">Y coordinate for patches 0..15</param>
|
||||||
// private void SendLayerPacket(float[] map, int y, int x)
|
private void SendLayerPacket(int x, int y, float[] map)
|
||||||
// {
|
{
|
||||||
// int[] patches = new int[4];
|
int[] patches = new int[4];
|
||||||
// patches[0] = x + 0 + y * 16;
|
patches[0] = x + 0 + y * 16;
|
||||||
// patches[1] = x + 1 + y * 16;
|
patches[1] = x + 1 + y * 16;
|
||||||
// patches[2] = x + 2 + y * 16;
|
patches[2] = x + 2 + y * 16;
|
||||||
// patches[3] = x + 3 + y * 16;
|
patches[3] = x + 3 + y * 16;
|
||||||
|
|
||||||
// Packet layerpack = LLClientView.TerrainManager.CreateLandPacket(map, patches);
|
float[] heightmap = (map.Length == 65536) ?
|
||||||
// OutPacket(layerpack, ThrottleOutPacketType.Land);
|
map :
|
||||||
// }
|
LLHeightFieldMoronize(map);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Packet layerpack = TerrainCompressor.CreateLandPacket(heightmap, patches);
|
||||||
|
OutPacket(layerpack, ThrottleOutPacketType.Land);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
for (int px = x ; px < x + 4 ; px++)
|
||||||
|
SendLayerData(px, y, map);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sends a specified patch to a client
|
/// Sends a specified patch to a client
|
||||||
|
|
Loading…
Reference in New Issue