Пример #1
0
        public void Start()
        {
            XChunk.Width  = 16;
            XChunk.Depth  = 16;
            XChunk.Height = 256;

            for (int i = 0; i < SIZE; i++)
            {
                for (int j = 0; j < SIZE; j++)
                {
                    var ch = new XChunk(this, new Vector3(i * 16, 0, j * 16), new Vector3(0));
                    var hm = simplexNoise.GetNoiseMap2D(i * 16, j * 16, 16, 16);
                    ch.HeightMap         = hm;
                    Chunks[i + j * SIZE] = ch;
                }
            }

            Task.Run(() =>
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();
                for (int i = 0; i < Chunks.Length; i++)
                {
                    Chunks[i].Generate();
                }

                for (int i = 0; i < Chunks.Length; i++)
                {
                    Chunks[i].CalculateOffset();
                }
                object raw    = File.ReadAllBytes(@"data\chunks\indices.byte").DeserializeToDynamicType();
                int[] indices = (int[])raw;

                indexBuffer = new IndexBuffer(Device, IndexElementSize.ThirtyTwoBits, indices.Length, BufferUsage.WriteOnly);
                indexBuffer.SetData <int>(indices);

                indices = new int[0];

                vertexBuffer = new VertexBuffer(Device, typeof(VertexPositionTexture), XChunk.TILE_SIZE * 10, BufferUsage.WriteOnly);

                buildBuffers();
                sw.Stop();
                Console.WriteLine("DONE IN " + sw.Elapsed.TotalSeconds + " SECONDS!");

                IsReady = true;
            });
        }