public void UpdateValues(byte[] baseValues) { this.size = Mathf.RoundToInt(Mathf.Sqrt((float)baseValues.Length)); this.levels = Mathf.RoundToInt(Mathf.Log((float)this.size, 2f)) + 1; this.values = new ByteMap[this.levels]; this.values[0] = new ByteMap(this.size, baseValues, 1); for (int level = 1; level < this.levels; ++level) { ByteMap byteMap1 = this.values[level - 1]; ByteMap byteMap2 = this.values[level] = this.CreateLevel(level); for (int index1 = 0; index1 < byteMap2.Size; ++index1) { for (int index2 = 0; index2 < byteMap2.Size; ++index2) { byteMap2[index2, index1] = byteMap1[2 * index2, 2 * index1] + byteMap1[2 * index2 + 1, 2 * index1] + byteMap1[2 * index2, 2 * index1 + 1] + byteMap1[2 * index2 + 1, 2 * index1 + 1]; } } } }
public void UpdateValues(byte[] baseValues) { size = Mathf.RoundToInt(Mathf.Sqrt(baseValues.Length)); levels = Mathf.RoundToInt(Mathf.Log(size, 2f)) + 1; values = new ByteMap[levels]; values[0] = new ByteMap(size, baseValues); for (int i = 1; i < levels; i++) { ByteMap byteMap = values[i - 1]; ByteMap byteMap2 = (values[i] = CreateLevel(i)); for (int j = 0; j < byteMap2.Size; j++) { for (int k = 0; k < byteMap2.Size; k++) { byteMap2[k, j] = byteMap[2 * k, 2 * j] + byteMap[2 * k + 1, 2 * j] + byteMap[2 * k, 2 * j + 1] + byteMap[2 * k + 1, 2 * j + 1]; } } } }
public void UpdateValues(byte[] baseValues) { this.size = Mathf.RoundToInt(Mathf.Sqrt((float)((int)baseValues.Length))); this.levels = Mathf.RoundToInt(Mathf.Log((float)this.size, 2f)) + 1; this.values = new ByteMap[this.levels]; this.values[0] = new ByteMap(this.size, baseValues, 1); for (int i = 1; i < this.levels; i++) { ByteMap byteMap = this.values[i - 1]; ByteMap[] byteMapArray = this.values; ByteMap byteMap1 = this.CreateLevel(i); ByteMap byteMap2 = byteMap1; byteMapArray[i] = byteMap1; ByteMap item = byteMap2; for (int j = 0; j < item.Size; j++) { for (int k = 0; k < item.Size; k++) { item[k, j] = byteMap[2 * k, 2 * j] + byteMap[2 * k + 1, 2 * j] + byteMap[2 * k, 2 * j + 1] + byteMap[2 * k + 1, 2 * j + 1]; } } } }