Source: dynSimCamera.js

const Vector = require("./tools/vector.js")
const Motion = require("./motion");

/**
 * @constructor
 * @memberof PhSim
 * @param {*} dynSim 
 */

var Camera = function(dynSim) {

	/**
	 * Dynamic Simulation
	 * @type {PhSim}
	 */

	this.dynSim = dynSim;

}

/**
 * Camera scale
 * @type {Number}
 */

Camera.prototype.scale = 1;

/**
 * Camera offset x 
 * @type {Number}
 */

Camera.prototype.x = 0;

/**
 * Camera offset y
 * @type {Number}
 */

Camera.prototype.y = 0;

/**
 * Target object
 * @type {StaticObject}
 */

Camera.prototype.targetObj = null;

/**
 * Objects that will transform with the camera
 * @type {StaticObject[]}
 */

Camera.prototype.transformingObjects = []

Camera.prototype.zoomIn = function(scaleFactor) {
	this.scale = this.scale * scaleFactor;
	this.dynSim.ctx.scale(scaleFactor,scaleFactor);
}

/**
 * Translate camera by the vector `(dx,dy)`.
 * 
 * @param {Number} dx - Amount to transform camera in `x` direction.
 * @param {Number} dy - Amount to transform camera in `y` direction.
 * 
 */

Camera.prototype.translate = function(dx,dy) {

	dx = dx || 0
	dy = dy || 0

	this.x = this.x + dx;
	this.y = this.y + dy;
	this.dynSim.ctx.translate(dx,dy);

	for(var i = 0; i < this.transformingObjects.length; i++) {
		Motion.translate(this.transformingObjects[i],new Vector(-dx,-dy));
	}
}

Camera.prototype.setPosition = function(x,y) {
	this.dynSim.ctx.translate(-this.x,-this.y)
	this.x = x;
	this.y = y;
}

module.exports = Camera;