class CentralGravitySolver {
  constructor(body, physicsBody, options) {
    this.body = body;
    this.physicsBody = physicsBody;
    this.setOptions(options);
  }

  setOptions(options) {
    this.options = options;
  }

  solve() {
    var dx, dy, distance, node, i;
    var nodes = this.body.nodes;
    var nodeIndices = this.physicsBody.physicsNodeIndices;
    var forces = this.physicsBody.forces;


    var gravity = this.options.centralGravity;
    var gravityForce = 0;

    for (i = 0; i < nodeIndices.length; i++) {
      let nodeId = nodeIndices[i];
      node = nodes[nodeId];
      dx = -node.x;
      dy = -node.y;
      distance = Math.sqrt(dx * dx + dy * dy);

      gravityForce = (distance === 0) ? 0 : (gravity / distance);
      forces[nodeId].x = dx * gravityForce;
      forces[nodeId].y = dy * gravityForce;
    }
  }
}


export default CentralGravitySolver;