コード例 #1
0
        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();
        }
コード例 #2
0
        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");
        }