//private MeshData GetDataLod(int lodLevel, bool[] neighbors) //{ // var lod = Consts.LodsAmount - lodLevel; // if (lod == 0) return GetSeaBottomData(); // if (lod > _maxDataLod - 1) lod = _maxDataLod - 1; // var size = _heigthData.GetLength(0); // var step = (size - 1)/(int)Mathf.Pow(2, lod); // var amount = (size - 1)/step + 1; // var vertices = CalculateVertices(amount); // for (int x = 0; x < size; x += step) // { // for (int z = 0; z < size; z += step) // { // var height = _heigthData[x, z]*_maxHeight; // //Debug.Log(x.ToString("D2") + "|" + z.ToString("D2") + "|" + step.ToString("D2") + "|" + vertices.Length.ToString("D3") + "|" + (((x / step) * ((size - 1) / step + 1)) + (z / step)).ToString("D3")); // vertices[((x/step)*((size - 1)/step + 1)) + (z/step)].y = height; // } // } // return new MeshData() // { // Vertices = vertices, // Triangles = CalulateTriangles(amount), // UVs = CalculateUvs(amount) // }; //} private MeshData GetDataLod(int lodLevel, bool[] neighbors) { var lod = Consts.LodsAmount - lodLevel; if (lod > _maxDataLod - 1) { lod = _maxDataLod - 1; } var size = _heigthData.GetLength(0); var step = (size - 1) / (int)Mathf.Pow(2, lod); var amount = (size - 1) / step + 1; var matrix = Assistant.CreateVerticesMatrix(amount, Consts.UnitSize); for (int x = 0; x < size; x += step) { for (int z = 0; z < size; z += step) { var height = _heigthData[x, z] * _maxHeight; //Debug.Log(x.ToString("D2") + "|" + z.ToString("D2") + "|" + step.ToString("D2") + "|" + vertices.Length.ToString("D3") + "|" + (((x / step) * ((size - 1) / step + 1)) + (z / step)).ToString("D3")); //vertices[((x / step) * ((size - 1) / step + 1)) + (z / step)].y = height; matrix[x / step, z / step].y = height; } } return(new MeshData() { Vertices = GetArrayFromMatrix(matrix, neighbors), Triangles = Assistant.CreateTriangles(amount), UVs = Assistant.CreateUvs(amount) }); }