IEnumerator StartThreadSCMP() { threadSCMP = new Thread(ThreadSCMP) { Name = "Thread SCMP" }; threadSCMP.Priority = System.Threading.ThreadPriority.Highest; instance.window.SetActive(true); instance.progressText.text = "Generating Neroxis SCMP data...\nThis can take ~1-2min"; ErrorCode = ""; generatedMap = null; ts = System.TimeSpan.FromTicks(System.DateTime.Now.Ticks); ThreadStartTime = ts.TotalSeconds; threadSCMP.Start(); int lastSec = 0; while (threadSCMP.IsAlive) { yield return(null); int currentSec = Mathf.FloorToInt((float)(System.TimeSpan.FromTicks(System.DateTime.Now.Ticks).TotalSeconds - ThreadStartTime)); if (currentSec > lastSec) { instance.progressText.text = "Generating Neroxis SCMP data... (" + currentSec + "s)\nThis can take ~1-2min"; } if (!string.IsNullOrEmpty(ErrorCode)) { Debug.LogError(ErrorCode); break; } } instance.window.SetActive(false); threadSCMP = null; OnFinish?.Invoke(); }
public static void ThreadSCMP() { try { generator.MapGenerator generator = new generator.MapGenerator(); generator.interpretArguments(ComputeArguments()); generatedMap = generator.generate(); //Finish Debug.Log(generatedMap.getHeightmap().getWidth() + " x " + generatedMap.getHeightmap().getHeight()); } catch (System.Exception e) { ErrorCode = e.ToString(); } ts = System.TimeSpan.FromTicks(System.DateTime.Now.Ticks); float CurrentTime = (float)(ts.TotalSeconds - ThreadStartTime); Debug.Log("Thread finished in time: " + CurrentTime + "s"); }