public void Update() { while (_running) { long start = TCPManager.GetTimeStampMS(); if (start - _lastRegionUpdate > 500) { Log.Error("RegionMgr", "[" + RegionId + "] - Region inter-update period too long - took " + (start - _lastRegionUpdate) + " ms."); } else if (start - _lastRegionUpdate > 250) { Log.Notice("RegionMgr", "[" + RegionId + "] - Region inter-update period too long - took " + (start - _lastRegionUpdate) + " ms."); } try { WorldMgr.UpdateScripts(start); AddNewObjects(); RemoveOldObjects(); UpdateActors(start); //Bttlfront?.Update(start); ndbf?.Update(start); } catch (Exception e) { Log.Error("Error", e.ToString()); } long elapsed = TCPManager.GetTimeStampMS() - start; _lastRegionUpdate = TCPManager.GetTimeStampMS(); if (elapsed < RegionUpdateInterval) { Thread.Sleep((int)(RegionUpdateInterval - elapsed)); } else { if (elapsed > 500) { Log.Error("RegionMgr", "[" + RegionId + "] - Region update took too long. " + GetObjects() + " objects. " + elapsed + "ms."); } else if (elapsed > 250) { Log.Notice("RegionMgr", "[" + RegionId + "] - Region update took too long. " + GetObjects() + " objects. " + elapsed + "ms."); } } } DisposeActors(); }
public void Update() { while (Running) { long Start = TCPManager.GetTimeStampMS(); try { WorldMgr.UpdateScripts(Start); int i = 0; lock (ZonesMgr) { for (; i < ZonesMgr.Count; ++i) { ZonesMgr[i].Run(Start); } } } catch (Exception e) { Log.Error("Erreur", e.ToString()); } /*if (NextCollect <= Start) * { * GC.Collect(); * GC.WaitForPendingFinalizers(); * NextCollect = Start + COLLECT_UPDATE_INTERVAL; * }*/ long Elapsed = TCPManager.GetTimeStampMS() - Start; if (Elapsed < REGION_UPDATE_INTERVAL) { Thread.Sleep((int)(REGION_UPDATE_INTERVAL - Elapsed)); } else { Log.Debug("RegionMgr", "[" + RegionId + "] La region lag, " + GetObjects() + " objets! " + Elapsed + "ms"); } } }