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(); }
public override void Close() { base.Close(); Log.Error("处理关闭的逻辑...."); //关闭逻辑 ETimerComponent.Instance.OnCompleted(ETimer.AddTimer(3, "close"), () => { // Game.Scene.GetComponent<UIComponent_Z>().Create(UIType.Login); }); }
public PlaybackWindow(Vector2 POS, Vector2 DIM) : base(POS, DIM, "Playback") { playBtn = new Button(play, this, new Vector2(10, 25), new Vector2(40, 25), "play"); backBtn = new Button(back, this, new Vector2(55, 25), new Vector2(40, 25), "back"); fpsTxt = new Textfield(this, new Vector2(38, 55), new Vector2(57, 25), "1") { defaultContent = "0" }; startFrameTxt = new Textfield(this, new Vector2(200, 25), new Vector2(57, 25), "") { defaultContent = "0" }; endFrameTxt = new Textfield(this, new Vector2(200, 55), new Vector2(57, 25), "") { defaultContent = "0" }; startFrameTxt.numberField = true; endFrameTxt.numberField = true; fpsTxt.numberField = true; timer = new ETimer(1200); }