code: function (poly) {
          var area = this._mbr || this;
  
          if (!poly) {
              poly = new Crafty.polygon([0, 0], [area._w, 0], [area._w, area._h], [0, area._h]);
          }
  
          if (arguments.length > 1) {
              //convert args to array to create polygon
              var args = Array.prototype.slice.call(arguments, 0);
              poly = new Crafty.polygon(args);
          }
  
          this.map = poly;
          this.attach(this.map);
          this.map.shift(area._x, area._y);
  
          return this;
      }
docs: @
  #.collision
  @comp Collision
  
  @sign public this .collision([Crafty.polygon polygon])
  @param polygon - Crafty.polygon object that will act as the hit area
  
  @sign public this .collision(Array point1, .., Array pointN)
  @param point# - Array with an `x` and `y` position to generate a polygon
  
  Constructor takes a polygon or array of points to use as the hit area.
  
  The hit area (polygon) must be a convex shape and not concave
  for the collision detection to work.
  
  If no hit area is specified x, y, w, h properties of the entity will be used.
  
  @example
  ~~~
  Crafty.e("2D, Collision").collision(
  new Crafty.polygon([50,0], [100,100], [0,100])
  );
  
  Crafty.e("2D, Collision").collision([50,0], [100,100], [0,100]);
  ~~~
  
  @see Crafty.polygon