Scene-Starlight/Star.js

71 lines
1.4 KiB
JavaScript

"use strict";
import Vector from './Vector';
class Star
{
constructor(inCanvas, inPosition, inSize)
{
this.canvas = inCanvas;
this.position = inPosition;
this.points = 5;
this.size = inSize;
this.innerRingSize = this.size * 0.6;
this.colour = "white";
this.recalculatePoints();
}
/**
* The step around a circle (in radians) between each point (both inner and
* outer) on the star.
* Used by recalculatePoints().
* @return {number} The step around a circle between each point on the star.
*/
get pointStep()
{
return (Math.PI * 2) / (this.points * 2);
}
recalculatePoints()
{
this.points = [];
for (let n = 0, i = 0; n < Math.PI * 2; n += this.pointStep, i++)
{
let currentSize = i % 2 == 0 ? this.size : this.innerRingSize;
this.points.push(new Vector(
currentSize * Math.cos(Math.PI * 2 * (n / this.points * 2) + this.rotation - Math.PI / 2),
currentSize * Math.sin(Math.PI * 2 * (n / this.points * 2) + this.rotation - Math.PI / 2)
));
}
}
update(dt)
{
}
render(context)
{
context.save();
context.translate(this.position.x, this.position.y);
// TODO: Debug this
context.beginPath();
context.moveTo(this.points[0].x, this.points[0].y);
for (let point of this.points) {
context.lineTo(point.x, point.y);
}
context.closePath();
context.fillStyle = this.colour;
context.fill();
context.restore();
}
}
export default Star;