Source: physics/shapes.js

const { BOX, CIRC } = require('./const');

/**
 * Box shape for physic body.
 * @class Box
 */
class Box {
  /**
   * @constructor
   * @param {number} [width]  Width of this box
   * @param {number} [height] Height of this box
   */
  constructor(width = 8, height = 8) {
    /**
      Width of rectangle.
      @property {Number} width
      @default 8
    **/
    this.width = width;
    /**
     * Height of rectangle.
     * @property {Number} height
     * @default 8
     */
    this.height = height;

    /**
     * Type of this shape, should always be `BOX`.
     * @type {number}
     * @const
     */
    this.type = BOX;
  }
}

/**
 * Circle shape for physic body.
 *
 * @class Circle
 */
class Circle {
  /**
   * @constructor
   * @param {number} [radius]   Radius of this circle
   */
  constructor(radius = 4) {
    /**
     * Radius of circle.
     * @property {number} radius
     * @default 4
     */
    this.radius = radius;

    /**
     * Type of this shape, should always be `CIRC`.
     * @type {number}
     * @const
     */
    this.type = CIRC;
  }
  /**
   * Width of the circle shape.
   * @memberof Circle#
   * @type {number}
   * @readonly
   */
  get width() {
    return this.radius * 2;
  }
  /**
   * Height of the circle shape.
   * @memberof Circle#
   * @type {number}
   * @readonly
   */
  get height() {
    return this.radius * 2;
  }
}

module.exports = {
  Box,
  Circle,
};