constructor(renderer, htmlElement, type = "DOMMesh", {
        // Mesh params
        widthSegments,
        heightSegments,
        renderOrder,
        depthTest,
        cullFace,
        uniforms,
        vertexShaderID,
        fragmentShaderID,
        vertexShader,
        fragmentShader,
        texturesOptions,
        crossOrigin,
    } = {}) {
        // handling HTML shaders scripts
        vertexShaderID = vertexShaderID || htmlElement && htmlElement.getAttribute("data-vs-id");
        fragmentShaderID = fragmentShaderID || htmlElement && htmlElement.getAttribute("data-fs-id");

        super(renderer, type, {
            widthSegments,
            heightSegments,
            renderOrder,
            depthTest,
            cullFace,
            uniforms,
            vertexShaderID,
            fragmentShaderID,
            vertexShader,
            fragmentShader,
            texturesOptions,
            crossOrigin,
        });

        // return if no gl context
        if(!this.gl) {
            return;
        }

        // our HTML element
        this.htmlElement = htmlElement;

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

        // set plane sizes
        this._setDocumentSizes();
    }
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
*