private void Awake()
 {
     plane = new TestPlane(new RecreateCoordinates(A.position), new RecreateCoordinates(B.position), new RecreateCoordinates(C.position));
     for (s = 0f; s < 1; s += 0.1f)
     {
         for (t = 0f; t < 1; t += 0.1f)
         {
             GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
             sphere.transform.position = plane.Lerp(s, t).ConvertToVector();
         }
     }
 }
Exemplo n.º 2
0
        public void StartLoop()
        {
            float        secondsToTick     = 1f / tickRate;
            float        lastUpdateElapsed = 0f;
            float        lastFrameElapsed  = 0f;
            float        toSleep           = 0f;
            float        toSleepDept       = 0f;
            List <float> listOfUpdateTimes = new List <float>();

            listOfUpdateTimes.Add(0f);
            Stopwatch stopwatchUpdate    = new Stopwatch();
            Stopwatch stopwatchLastFrame = new Stopwatch();

            GameTimer = new Stopwatch();
            GameTimer.Start();
            NetworkMagic.IsServer = true;
            auth          = new Authenticator();
            playerManager = new PlayerManager();
            testPlane     = new TestPlane(this, 3f, 10f, 666);

            // playerManager.AddPlayer("Test1");
            // playerManager.AddPlayer("Test2");
            // unitSpawner.Start();
            IsRunning = true;
            while (IsRunning)
            {
                lastFrameElapsed = (float)stopwatchLastFrame.ElapsedMilliseconds / 1000f;
                stopwatchLastFrame.Restart();

                // toSleepDept += lastUpdateElapsed;
                // if (toSleepDept > secondsToTick)
                //     toSleepDept -= secondsToTick;
                // else
                //     Thread.Sleep((int)(secondsToTick * 1000));

                if (listOfUpdateTimes.Count > 300)
                {
                    listOfUpdateTimes.RemoveRange(0, 150);
                }

                // DebugLog.Warning($"{listOfUpdateTimes.Average()}");
                Thread.Sleep((int)(Math.Max(secondsToTick - listOfUpdateTimes.Average(), 0f) * 1000));

                stopwatchUpdate.Restart();
                Update(lastFrameElapsed);
                lastUpdateElapsed = (float)stopwatchUpdate.ElapsedMilliseconds / 1000f;
                listOfUpdateTimes.Add(lastUpdateElapsed);
            }
        }