function TextureModule() {
	    var _this = this;

	    classCallCheck(this, TextureModule);

	    defineProperty$3(defineProperty$3(this, "textures", []), "bridge", {
	      material: function material(_material, self) {
	        self.textures.forEach(function (texture) {
	          _material[texture[0]] = texture[1];
	        });
	        _material.needsUpdate = true;
	        return _material;
	      }
	    });

	    for (var _len = arguments.length, textures = new Array(_len), _key = 0; _key < _len; _key++) {
	      textures[_key] = arguments[_key];
	    }

	    textures.forEach(function (_ref) {
	      var url = _ref.url,
	          _ref$type = _ref.type,
	          type = _ref$type === void 0 ? 'map' : _ref$type,
	          _ref$offset = _ref.offset,
	          offset = _ref$offset === void 0 ? new Vector2(0, 0) : _ref$offset,
	          _ref$repeat = _ref.repeat,
	          repeat = _ref$repeat === void 0 ? new Vector2(1, 1) : _ref$repeat,
	          _ref$wrap = _ref.wrap,
	          wrap = _ref$wrap === void 0 ? RepeatWrapping : _ref$wrap,
	          _ref$mapping = _ref.mapping,
	          mapping = _ref$mapping === void 0 ? UVMapping : _ref$mapping,
	          _ref$fix = _ref.fix,
	          fix = _ref$fix === void 0 ? function (tex) {
	        return tex;
	      } : _ref$fix;
	      var texture = loader.load(url);

	      if (wrap.length > 0) {
	        texture.wrapS = wrap[0];
	        texture.wrapT = wrap[1];
	      } else texture.wrapS = texture.wrapT = wrap;

	      texture.mapping = mapping;
	      texture.offset.copy(offset);
	      texture.repeat.copy(repeat);
	      texture.magFilter = NearestFilter;
	      texture.minFilter = LinearMipMapLinearFilter;

	      _this.textures.push([type, fix(texture)]);
	    });
	  }
@class TextureModule
@category modules/mesh
@description A TextureModule can be applied to any Mesh or Model.
@param {Array} [textures] - array of texture objects
@memberof module:modules/mesh
@example <caption>Creating an instance. url takes a path, or a data object.</caption>
var woodTexture = new TextureModule({
  url: `${process.assetsPath}/textures/wood.jpg`
});
@example <caption>More comprehensive example, wood texture applied to a Box.</caption>
new Box({
  geometry: {
    width: 2,
    height: 2,
    depth: 2
  },
  modules: [
    new TextureModule({
      url: `path/to/texture.jpg`,
      repeat: new THREE.Vector2(1, 1) // optional
    })
  ],
  material: new THREE.MeshBasicMaterial({
    color: 0xffffff
  }),
  position: [50, 60, 70]
}).addTo(app);