function PlaneTextureLoader(renderer, parent) {
      var _this20;

      var _ref7 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
          _ref7$sourcesLoaded = _ref7.sourcesLoaded,
          sourcesLoaded = _ref7$sourcesLoaded === void 0 ? 0 : _ref7$sourcesLoaded,
          _ref7$sourcesToLoad = _ref7.sourcesToLoad,
          sourcesToLoad = _ref7$sourcesToLoad === void 0 ? 0 : _ref7$sourcesToLoad,
          _ref7$complete = _ref7.complete,
          complete = _ref7$complete === void 0 ? false : _ref7$complete,
          _ref7$onComplete = _ref7.onComplete,
          onComplete = _ref7$onComplete === void 0 ? function () {} : _ref7$onComplete;

      _classCallCheck(this, PlaneTextureLoader);

      _this20 = _super.call(this, renderer, parent.crossOrigin);
      _this20.type = "PlaneTextureLoader";
      _this20._parent = parent;

      if (_this20._parent.type !== "Plane" && _this20._parent.type !== "PingPongPlane" && _this20._parent.type !== "ShaderPass") {
        throwWarning(_this20.type + ": Wrong parent type assigned to this loader");
        _this20._parent = null;
      }

      _this20.sourcesLoaded = sourcesLoaded;
      _this20.sourcesToLoad = sourcesToLoad;
      _this20.complete = complete;
      _this20.onComplete = onComplete;
      return _this20;
    }
Extends our TextureLoader class to add sources loaded count, handle onComplete event
   Also adds the sources and textures to its defined parent
     params:
   @renderer (Curtains renderer or Renderer class object): our curtains object OR our curtains renderer object
   @parent (Plane or ShaderPass class object): The plane or shader pass that will use this loader
     @sourcesLoaded (int): Number of sources loaded
   @sourcesToLoad (int): Number of initial sources to load
   @complete (bool): Whether the loader has loaded all the initial sources
   @onComplete (function): Callback to execute when all the initial sources have been loaded
     returns :
   @this: our PlaneTextureLoader element
*