public Texture2D GetTexture()
        {
            int         xSize      = 16;
            int         zSize      = 16;
            int         chunkWidth = picWidth / 16;
            int         chunkDepth = picHeight / 16;
            Texture2D   tex        = new Texture2D(chunkWidth * xSize, chunkDepth * zSize);
            ArraysCache cache      = ArraysCacheManager.GetCache();

            for (int x = 0; x < chunkWidth; x++)
            {
                for (int z = 0; z < chunkDepth; z++)
                {
                    int[] result = mainLayer.getInts(cache, x * xSize, z * zSize, xSize, zSize);
                    cache.release();
                    for (int i = 0; i < result.Length; i++)
                    {
                        int   tempX = i % xSize;
                        int   tempZ = i / xSize;
                        Color c;
                        int   biomeId = ((result[i] & BiomeBits));

                        BiomeConfig biomeConfig = WorldConfig.Instance.GetBiomeConfigById(biomeId);
                        c = biomeConfig.color;
                        tex.SetPixel(x * xSize + tempX, z * zSize + tempZ, c);
                    }
                }
            }
            tex.Apply();
            return(tex);
        }
        public int[] GetBiomes(int[] biomeArray, int x, int z, int x_size, int z_size)
        {
            if ((biomeArray == null) || biomeArray.Length < x_size * z_size)
            {
                biomeArray = new int[x_size * z_size];
            }

            ArraysCache cache = ArraysCacheManager.GetCache();

            int[] result = this._biomeLayer.getInts(cache, x, z, x_size, z_size);
            ArraysCacheManager.ReleaseCache(cache);

            Array.Copy(result, 0, biomeArray, 0, x_size * z_size);

//			for (int i = 0; i < result.Length; i++) {
//				int tempX = i % x_size;
//				int tempZ = i / x_size;
//
//				biomeArray[tempX,tempZ] = result[i];
//			}
            return(biomeArray);
        }