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(); } } }
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); } }