function DOMMesh(renderer, htmlElement) {
      var _this29;

      var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "DOMMesh";

      var _ref9 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
          widthSegments = _ref9.widthSegments,
          heightSegments = _ref9.heightSegments,
          renderOrder = _ref9.renderOrder,
          depthTest = _ref9.depthTest,
          cullFace = _ref9.cullFace,
          uniforms = _ref9.uniforms,
          vertexShaderID = _ref9.vertexShaderID,
          fragmentShaderID = _ref9.fragmentShaderID,
          vertexShader = _ref9.vertexShader,
          fragmentShader = _ref9.fragmentShader,
          texturesOptions = _ref9.texturesOptions,
          crossOrigin = _ref9.crossOrigin;

      _classCallCheck(this, DOMMesh);

      // handling HTML shaders scripts
      vertexShaderID = vertexShaderID || htmlElement && htmlElement.getAttribute("data-vs-id");
      fragmentShaderID = fragmentShaderID || htmlElement && htmlElement.getAttribute("data-fs-id");
      _this29 = _super2.call(this, renderer, type, {
        widthSegments: widthSegments,
        heightSegments: heightSegments,
        renderOrder: renderOrder,
        depthTest: depthTest,
        cullFace: cullFace,
        uniforms: uniforms,
        vertexShaderID: vertexShaderID,
        fragmentShaderID: fragmentShaderID,
        vertexShader: vertexShader,
        fragmentShader: fragmentShader,
        texturesOptions: texturesOptions,
        crossOrigin: crossOrigin
      }); // return if no gl context

      if (!_this29.gl) {
        return _possibleConstructorReturn(_this29);
      } // our HTML element


      _this29.htmlElement = htmlElement;

      if (!_this29.htmlElement || _this29.htmlElement.length === 0) {
        if (!_this29.renderer.production) throwWarning(_this29.type + ": The HTML element you specified does not currently exists in the DOM");
      } // set plane sizes


      _this29._setDocumentSizes();

      return _this29;
    }
Here we create our DOMGLObject object
   We will extend our Mesh class object by adding HTML sizes helpers (bounding boxes getter/setter and mouse to mesh positioning)
     params:
   @renderer (Curtains renderer or Renderer class object): our curtains object OR our curtains renderer object
   @plane (html element): the html element that we will use for our DOMMesh object
   @type (string): Object type (should be either "Plane" or "ShaderPass")
   @Meshparams (object): see Mesh class object
   
   returns:
   @this: our BasePlane element
*