void TickTakeItems() { takeItemsTimer -= TickDelta; if (takeItemsTimer <= 0) { takeItemsTimer += .25f; Vec3 size = MapBounds.GetSize(); float radius = Math.Max(Math.Max(size.X, size.Y), size.Z); Map.Instance.GetObjects(new Sphere(Position, radius), delegate(MapObject obj) { Item item = obj as Item; if (item == null) { return; } //if( ( item.Position - Position ).LengthFast() > radius ) if ((item.Position - Position).LengthSqr() > radius * radius) { return; } item.Take(this); }); } }