public List<Item> GetItems()
{
if( this.Map == null || this.Map == Map.Internal )
return new List<Item>();
Point2D start = new Point2D( this.X + Components.Min.X, this.Y + Components.Min.Y );
Point2D end = new Point2D( this.X + Components.Max.X + 1, this.Y + Components.Max.Y + 1 );
Rectangle2D rect = new Rectangle2D( start, end );
List<Item> list = new List<Item>();
IPooledEnumerable eable = this.Map.GetItemsInBounds( rect );
foreach ( Item item in eable )
if ( item.Movable && IsInside( item ) )
list.Add( item );
eable.Free();
return list;
}