From 4c7107dfdaa441d189317f94d49c2074e0dfd83e Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Wed, 13 May 2020 14:51:05 +0100 Subject: [PATCH] cosmetics --- OpenSim/Framework/WebUtil.cs | 23 +++- .../Framework/Scenes/TerrainCompressor.cs | 124 +++++++++--------- 2 files changed, 75 insertions(+), 72 deletions(-) diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index 30b548542e..64138e2775 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -582,25 +582,36 @@ namespace OpenSim.Framework /// /// Convert a NameValueCollection into a query string. This is the - /// inverse of HttpUtility.ParseQueryString() + /// not exactly the inverse of HttpUtility.ParseQueryString() /// /// Collection of key/value pairs to convert /// A query string with URL-escaped values public static string BuildQueryString(NameValueCollection parameters) { - List items = new List(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(); } /// @@ -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); /// /// Perform a synchronous REST request. diff --git a/OpenSim/Region/Framework/Scenes/TerrainCompressor.cs b/OpenSim/Region/Framework/Scenes/TerrainCompressor.cs index 020c7bed99..82deafc7da 100644 --- a/OpenSim/Region/Framework/Scenes/TerrainCompressor.cs +++ b/OpenSim/Region/Framework/Scenes/TerrainCompressor.cs @@ -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++) {