function Camera() {
      var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
          _ref10$fov = _ref10.fov,
          fov = _ref10$fov === void 0 ? 50 : _ref10$fov,
          _ref10$near = _ref10.near,
          near = _ref10$near === void 0 ? 0.1 : _ref10$near,
          _ref10$far = _ref10.far,
          far = _ref10$far === void 0 ? 150 : _ref10$far,
          width = _ref10.width,
          height = _ref10.height,
          _ref10$pixelRatio = _ref10.pixelRatio,
          pixelRatio = _ref10$pixelRatio === void 0 ? 1 : _ref10$pixelRatio;

      _classCallCheck(this, Camera);

      this.position = new Vec3();
      this.projectionMatrix = new Mat4();
      this.worldMatrix = new Mat4();
      this.viewMatrix = new Mat4();
      this._shouldUpdate = false;
      this.setSize();
      this.setPerspective(fov, near, far, width, height, pixelRatio);
    }
Here we create our Camera object
   Creates a perspective camera and its projection matrix (which is used by Plane's class objects)
   Uses a dirty _shouldUpdate flag used to determine if we should update the matrix
     params:
   @fov (float, optional): the perspective field of view. Should be greater than 0 and lower than 180. Default to 50.
   @near (float, optional): near plane, the closest point where a mesh vertex is drawn. Default to 0.1.
   @far (float, optional): far plane, farthest point where a mesh vertex is drawn. Default to 150.
   @width (float, optional): width used to calculate the camera aspect ratio. Default to the renderer container's width.
   @height (float, optional): height used to calculate the camera aspect ratio. Default to the renderer container's height.
   @pixelRatio (float, optional): pixel ratio used to calculate the camera aspect ratio. Default to the renderer's pixel ratio.
     returns:
   @this: our Mesh element
*