cosmetics
parent
f15c6be20c
commit
4c7107dfda
|
@ -582,25 +582,36 @@ namespace OpenSim.Framework
|
|||
|
||||
/// <summary>
|
||||
/// Convert a NameValueCollection into a query string. This is the
|
||||
/// inverse of HttpUtility.ParseQueryString()
|
||||
/// not exactly the inverse of HttpUtility.ParseQueryString()
|
||||
/// </summary>
|
||||
/// <param name="parameters">Collection of key/value pairs to convert</param>
|
||||
/// <returns>A query string with URL-escaped values</returns>
|
||||
public static string BuildQueryString(NameValueCollection parameters)
|
||||
{
|
||||
List<string> items = new List<string>(parameters.Count);
|
||||
if (parameters.Count == 0)
|
||||
return string.Empty;
|
||||
|
||||
StringBuilder sb = new StringBuilder(4096);
|
||||
foreach (string key in parameters.Keys)
|
||||
{
|
||||
string[] values = parameters.GetValues(key);
|
||||
if (values != null)
|
||||
{
|
||||
foreach (string value in values)
|
||||
items.Add(String.Concat(key, "=", HttpUtility.UrlEncode(value ?? String.Empty)));
|
||||
{
|
||||
sb.Append(key);
|
||||
sb.Append("=");
|
||||
if(!string.IsNullOrWhiteSpace(value))
|
||||
sb.Append(HttpUtility.UrlEncode(value));
|
||||
sb.Append("&");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return String.Join("&", items.ToArray());
|
||||
if(sb.Length > 1)
|
||||
sb.Length--;
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -1097,9 +1108,7 @@ namespace OpenSim.Framework
|
|||
|
||||
public class SynchronousRestObjectRequester
|
||||
{
|
||||
private static readonly ILog m_log =
|
||||
LogManager.GetLogger(
|
||||
MethodBase.GetCurrentMethod().DeclaringType);
|
||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
/// <summary>
|
||||
/// Perform a synchronous REST request.
|
||||
|
|
|
@ -94,7 +94,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
return layer;
|
||||
}
|
||||
|
||||
public static void CreatePatchtStandardSize(BitPack output, float[] patchData, int x, int y)
|
||||
public unsafe static void CreatePatchtStandardSize(BitPack output, float[] patchData, int x, int y)
|
||||
{
|
||||
TerrainPatch.Header header = PrescanPatch(patchData);
|
||||
header.QuantWBits = 136;
|
||||
|
@ -103,7 +103,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
header.PatchIDs += (x << 5);
|
||||
|
||||
int wbits;
|
||||
int[] patch = CompressPatch(patchData, header, 10, out wbits);
|
||||
int* patch = stackalloc int[256];
|
||||
CompressPatch(patchData, header, 10, out wbits, patch);
|
||||
EncodePatchHeader(output, header, false, ref wbits);
|
||||
EncodePatch(output, patch, 0, wbits);
|
||||
}
|
||||
|
@ -127,9 +128,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
return header;
|
||||
}
|
||||
|
||||
private static int[] CompressPatch(float[] patchData, TerrainPatch.Header header, int prequant, out int wbits)
|
||||
private unsafe static void CompressPatch(float[] patchData, TerrainPatch.Header header, int prequant, out int wbits, int* iout)
|
||||
{
|
||||
float[] block = new float[256];
|
||||
float* block = stackalloc float[256];
|
||||
float oozrange = 1.0f / header.Range;
|
||||
float range = (1 << prequant);
|
||||
float premult = oozrange * range;
|
||||
|
@ -148,11 +149,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
}
|
||||
|
||||
wbits = (prequant >> 1);
|
||||
int[] iout = new int[256];
|
||||
|
||||
dct16x16(block, iout, ref wbits);
|
||||
|
||||
return iout;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -216,7 +214,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
}
|
||||
*/
|
||||
|
||||
public static void CreatePatchFromTerrainData(BitPack output, TerrainData terrData, int patchX, int patchY)
|
||||
public unsafe static void CreatePatchFromTerrainData(BitPack output, TerrainData terrData, int patchX, int patchY)
|
||||
{
|
||||
float frange;
|
||||
|
||||
|
@ -255,7 +253,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
}
|
||||
|
||||
int wbits;
|
||||
int[] patch = CompressPatch(terrData, patchX, patchY, header, 10, out wbits);
|
||||
int* patch = stackalloc int[256];
|
||||
CompressPatch(terrData, patchX, patchY, header, 10, out wbits, patch);
|
||||
EncodePatchHeader(output, header, largeRegion, ref wbits);
|
||||
EncodePatch(output, patch, 0, wbits);
|
||||
}
|
||||
|
@ -295,7 +294,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
output.PackBits(header.PatchIDs, 10);
|
||||
}
|
||||
|
||||
private unsafe static void EncodePatch(BitPack output, int[] _patch, int postquant, int wbits)
|
||||
private unsafe static void EncodePatch(BitPack output, int* patch, int postquant, int wbits)
|
||||
{
|
||||
int maxwbitssize = (1 << wbits) - 1;
|
||||
|
||||
|
@ -307,71 +306,67 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
|
||||
int lastZeroindx = 256 - postquant;
|
||||
|
||||
fixed(int * patch = _patch)
|
||||
if (lastZeroindx != 256)
|
||||
patch[lastZeroindx] = 0;
|
||||
|
||||
int i = 0;
|
||||
while(i < 256)
|
||||
{
|
||||
if (lastZeroindx != 256)
|
||||
patch[lastZeroindx] = 0;
|
||||
int temp = patch[i];
|
||||
|
||||
int i = 0;
|
||||
while(i < 256)
|
||||
if (temp == 0)
|
||||
{
|
||||
int temp = patch[i];
|
||||
|
||||
if (temp == 0)
|
||||
int j = i + 1;
|
||||
while(j < lastZeroindx)
|
||||
{
|
||||
int j = i + 1;
|
||||
while(j < lastZeroindx)
|
||||
{
|
||||
if (patch[j] != 0)
|
||||
break;
|
||||
++j;
|
||||
}
|
||||
|
||||
if (j == lastZeroindx)
|
||||
{
|
||||
output.PackBits(ZERO_EOB, 2);
|
||||
return;
|
||||
}
|
||||
|
||||
i = j - i;
|
||||
while(i > 8)
|
||||
{
|
||||
output.PackBitsFromByte(ZERO_CODE);
|
||||
i -= 8;
|
||||
}
|
||||
if( i > 0)
|
||||
output.PackBitsFromByte(ZERO_CODE, i);
|
||||
i = j;
|
||||
continue;
|
||||
if (patch[j] != 0)
|
||||
break;
|
||||
++j;
|
||||
}
|
||||
|
||||
if (temp < 0)
|
||||
if (j == lastZeroindx)
|
||||
{
|
||||
temp *= -1;
|
||||
if (temp > maxwbitssize)
|
||||
temp = maxwbitssize;
|
||||
|
||||
output.PackBits(NEGATIVE_VALUE, 3);
|
||||
output.PackBits(temp, wbits);
|
||||
output.PackBits(ZERO_EOB, 2);
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
||||
i = j - i;
|
||||
while(i > 8)
|
||||
{
|
||||
if (temp > maxwbitssize)
|
||||
temp = maxwbitssize;
|
||||
|
||||
output.PackBits(POSITIVE_VALUE, 3);
|
||||
output.PackBits(temp, wbits);
|
||||
output.PackBitsFromByte(ZERO_CODE);
|
||||
i -= 8;
|
||||
}
|
||||
++i;
|
||||
if( i > 0)
|
||||
output.PackBitsFromByte(ZERO_CODE, i);
|
||||
i = j;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (temp < 0)
|
||||
{
|
||||
temp *= -1;
|
||||
if (temp > maxwbitssize)
|
||||
temp = maxwbitssize;
|
||||
|
||||
output.PackBits(NEGATIVE_VALUE, 3);
|
||||
output.PackBits(temp, wbits);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (temp > maxwbitssize)
|
||||
temp = maxwbitssize;
|
||||
|
||||
output.PackBits(POSITIVE_VALUE, 3);
|
||||
output.PackBits(temp, wbits);
|
||||
}
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
private static int[] CompressPatch(TerrainData terrData, int patchX, int patchY, TerrainPatch.Header header,
|
||||
int prequant, out int wbits)
|
||||
private unsafe static void CompressPatch(TerrainData terrData, int patchX, int patchY, TerrainPatch.Header header,
|
||||
int prequant, out int wbits, int* iout)
|
||||
{
|
||||
float[] block = new float[256];
|
||||
int[] iout = new int[256];
|
||||
float* block = stackalloc float[256];
|
||||
|
||||
float oozrange = 1.0f / header.Range;
|
||||
float invprequat = (1 << prequant);
|
||||
|
@ -388,7 +383,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
wbits = (prequant >> 1);
|
||||
|
||||
dct16x16(block, iout, ref wbits);
|
||||
return iout;
|
||||
}
|
||||
|
||||
#region Initialization
|
||||
|
@ -523,9 +517,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
const float W16_8R = 0.70710678118654752440f;
|
||||
|
||||
|
||||
unsafe static void dct16x16(float[] _a, int[] _iout, ref int wbits)
|
||||
unsafe static void dct16x16(float* a, int* iout, ref int wbits)
|
||||
{
|
||||
float[] _tmp = new float[256];
|
||||
float* tmp = stackalloc float[256];
|
||||
|
||||
float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
|
||||
float x4r, x4i, x5r, x5i, x6r, x6i, x7r, x7i;
|
||||
|
@ -540,8 +534,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
int wbitsMaxValue = 1 << wbits;
|
||||
bool dowbits = wbits < 17;
|
||||
|
||||
fixed (float* a = _a, tmp = _tmp, fQuantizeTable16 = QuantizeTable16)
|
||||
fixed (int* iout = _iout, fCopyMatrix16 = CopyMatrix16)
|
||||
fixed (float* fQuantizeTable16 = QuantizeTable16)
|
||||
fixed (int* fCopyMatrix16 = CopyMatrix16)
|
||||
{
|
||||
for (j = 0, k = 0; j < 256; j += 16, k++)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue