public void GetRangedObject(Object obj, int range, RangedObjectDelegate rangeFunction) { if (!obj.IsInWorld()) { return; } GetCells(obj.XOffset, obj.YOffset, range, cell => { for (var i = 0; i < cell.Objects.Count; ++i) { Object distObject; if ((distObject = cell.Objects[i]) == null) { cell.Objects.RemoveAt(i); i--; } else if (obj.Get2DDistanceToObject(distObject) <= MaxVisibilityRange) { rangeFunction(distObject); } } }); }