Example #1
0
        public ChunkGenerator(float updateTime, Godot.OpenSimplexNoise noise)
        {
            Noise = noise;
            Timer = new ETimer(updateTime, true, true, UpdateQueue);

            ResetEvents       = new AutoResetEvent[Environment.ProcessorCount / 2];
            GenerationThreads = new Thread[Environment.ProcessorCount / 2];
            IsFree            = new bool[Environment.ProcessorCount / 2];

            for (int i = 0; i < ResetEvents.Length; i++)
            {
                ResetEvents[i] = new AutoResetEvent(false);
            }
            for (int i = 0; i < IsFree.Length; i++)
            {
                IsFree[i] = true;
            }
            for (int i = 0; i < GenerationThreads.Length; i++)
            {
                GenerationThreads[i]      = new Thread(GenerationChunk);
                GenerationThreads[i].Name = $"{i}";
                GenerationThreads[i].Start();
            }

            Timer.Start();
        }