src/modules/Circle.mjs
import Body from './Body.mjs';
/**
* A circle used to detect collisions
* @class
*/
export default class Circle extends Body {
/**
* @constructor
* @param {Number} [x = 0] The starting X coordinate
* @param {Number} [y = 0] The starting Y coordinate
* @param {Number} [radius = 0] The radius
* @param {Number} [scale = 1] The scale
* @param {Number} [padding = 0] The amount to pad the bounding volume when testing for potential collisions
*/
constructor(x = 0, y = 0, radius = 0, scale = 1, padding = 0) {
super(x, y, padding);
/**
* @desc
* @type {Number}
*/
this.radius = radius;
/**
* @desc
* @type {Number}
*/
this.scale = scale;
}
/**
* Draws the circle to a CanvasRenderingContext2D's current path
* @param {CanvasRenderingContext2D} context The context to add the arc to
*/
draw(context) {
const x = this.x;
const y = this.y;
const radius = this.radius * this.scale;
context.moveTo(x + radius, y);
context.arc(x, y, radius, 0, Math.PI * 2);
}
};