minor cosmetics

This commit is contained in:
UbitUmarov
2022-03-26 04:58:14 +00:00
parent 30b7bb7d45
commit 6155c202a7

View File

@@ -141,10 +141,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
header.QuantWBits |= wordsize << 4;
int k = 0;
for (int j = 0; j < 16; j++)
for (int j = 0; j < 256 ; j += 16)
{
for (int i = 0; i < 16; i++)
block[k++] = (patchData[j * 16 + i] - sub) * premult;
int nj = j + 16;
for (int i = j; i < nj; ++i)
block[k++] = (patchData[i] - sub) * premult;
}
wbits = (prequant >> 1);
@@ -152,87 +153,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
dct16x16(block, iout, ref wbits);
}
/*
// new using terrain data and patchs indexes
public static List<LayerDataPacket> CreateLayerDataPackets(TerrainData terrData, int[] map)
{
List<LayerDataPacket> ret = new List<LayerDataPacket>();
int numberPatchs = map.Length / 2;
byte[] data = new byte[numberPatchs * 256 * 2];
//create packet and global header
LayerDataPacket layer = new LayerDataPacket();
byte landPacketType;
if (terrData.SizeX > Constants.RegionSize || terrData.SizeY > Constants.RegionSize)
landPacketType = (byte)TerrainPatch.LayerType.LandExtended;
else
landPacketType = (byte)TerrainPatch.LayerType.Land;
layer.LayerID.Type = landPacketType;
BitPack bitpack = new BitPack(data, 0);
bitpack.PackBits(STRIDE, 16);
bitpack.PackBitsFromByte(16);
bitpack.PackBitsFromByte(landPacketType);
int s;
for (int i = 0; i < numberPatchs; i++)
{
s = 2 * i;
CreatePatchFromTerrainData(bitpack, terrData, map[s], map[s + 1]);
if (bitpack.BytePos > 950 && i != numberPatchs - 1)
{
//finish this packet
bitpack.PackBitsFromByte(END_OF_PATCHES);
layer.LayerData.Data = new byte[bitpack.BytePos + 1];
Buffer.BlockCopy(bitpack.Data, 0, layer.LayerData.Data, 0, bitpack.BytePos + 1);
ret.Add(layer);
// start another
layer = new LayerDataPacket();
layer.LayerID.Type = landPacketType;
bitpack = new BitPack(data, 0);
bitpack.PackBits(STRIDE, 16);
bitpack.PackBitsFromByte(16);
bitpack.PackBitsFromByte(landPacketType);
}
}
bitpack.PackBitsFromByte(END_OF_PATCHES);
layer.LayerData.Data = new byte[bitpack.BytePos + 1];
Buffer.BlockCopy(bitpack.Data, 0, layer.LayerData.Data, 0, bitpack.BytePos + 1);
ret.Add(layer);
return ret;
}
*/
public unsafe static void CreatePatchFromTerrainData(BitPack output, TerrainData terrData, int patchX, int patchY)
{
float frange;
TerrainPatch.Header header = PrescanPatch(terrData, patchX, patchY, out frange);
TerrainPatch.Header header = PrescanPatch(terrData, patchX, patchY, out float frange);
header.QuantWBits = 130;
bool largeRegion = false;
// If larger than legacy region size, pack patch X and Y info differently.
if (terrData.SizeX > Constants.RegionSize || terrData.SizeY > Constants.RegionSize)
{
header.PatchIDs = (patchY & 0xFFFF);
header.PatchIDs += (patchX << 16);
largeRegion = true;
}
else
{
header.PatchIDs = (patchY & 0x1F);
header.PatchIDs += (patchX << 5);
}
bool largeRegion = terrData.SizeX > Constants.RegionSize || terrData.SizeY > Constants.RegionSize;
if (Math.Round(frange, 2) == 1.0)
{
@@ -242,18 +168,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP
output.PackBitsFromByte(1); //range low
output.PackBitsFromByte(0); //range high
if (largeRegion)
output.PackBits(header.PatchIDs, 32);
output.PackBits((patchX << 16) | (patchY & 0xFFFF), 32);
else
output.PackBits(header.PatchIDs, 10);
output.PackBits((patchX << 5) | (patchY & 0x1F) , 10);
// and thats all
output.PackBits(ZERO_EOB, 2);
return;
}
int wbits;
header.PatchIDs = largeRegion ?
(patchX << 16) | (patchY & 0xFFFF) :
(patchX << 5) | (patchY & 0x1F);
int* patch = stackalloc int[256];
CompressPatch(terrData, patchX, patchY, header, 10, out wbits, patch);
CompressPatch(terrData, patchX, patchY, header, 10, out int wbits, patch);
EncodePatchHeader(output, header, largeRegion, ref wbits);
EncodePatch(output, patch, 0, wbits);
}
@@ -261,16 +190,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// Scan the height info we're returning and return a patch packet header for this patch.
private static TerrainPatch.Header PrescanPatch(TerrainData terrData, int patchX, int patchY, out float frange)
{
TerrainPatch.Header header = new TerrainPatch.Header();
float zmax = float.MinValue;
float zmin = float.MaxValue;
terrData.GetPatchMinMax(patchX, patchY, out zmin, out zmax);
header.DCOffset = zmin;
terrData.GetPatchMinMax(patchX, patchY, out float zmin, out float zmax);
frange = ((zmax - zmin) + 1.0f);
header.Range = (int)frange;
TerrainPatch.Header header = new TerrainPatch.Header()
{
DCOffset = zmin,
Range = (int)frange
};
return header;
}