public override void Update(Map m, Grid grid, GridInfo info, uint t_diff) { if (!info.getUnloadLock()) { info.UpdateTimeTracker((int)t_diff); if (info.getTimeTracker().Passed()) { if (!m.UnloadGrid(grid, false)) { Log.outDebug("Grid[{0}, {1}] for map {2} differed unloading due to players or active objects nearby", grid.getX(), grid.getY(), m.GetId()); m.ResetGridExpiry(grid); } } } }
public override void Update(Map m, Grid grid, GridInfo info, uint t_diff) { // Only check grid activity every (grid_expiry/10) ms, because it's really useless to do it every cycle info.UpdateTimeTracker((int)t_diff); if (info.getTimeTracker().Passed()) { if (grid.GetWorldObjectCountInNGrid <Player>() == 0 && !m.ActiveObjectsNearGrid(grid)) { ObjectGridStoper worker = new ObjectGridStoper(); var visitor = new Visitor <ObjectGridStoper>(worker, NotifierObjectType.Grid); grid.VisitAllCells(visitor); grid.SetGridState(GridState_t.Idle); Log.outDebug("Grid[{0}, {1}] on map {2} moved to IDLE state", grid.getX(), grid.getY(), m.GetId()); } else { m.ResetGridExpiry(grid, 0.1f); } } }