Source: Thing.UE/Renderer/CEF/UWebBrowser.js

const UE4 = require("../../../Framework/Framework");

/**
 * @description 基于CEF内核驱动的全屏浏览器,用于在UE中渲染2D页面
 * @class UWebBrowser
 * @example
 * 
 * let browser = new THING.UE.UWebBrowser('www.thingjs.com');
 */
class UWebBrowser {

    #url;

    constructor() {
        let path = "Blueprint'/SharedLib/CEF/BP_WebBrowser.BP_WebBrowser'";
        let blueprint = UE4.Blueprint.Load(path);
        this.browser = new UE4.Actor(null, blueprint);
        this.#url = null;
    }

    /**
     * @description 设置URL
     * @param {String} value - url
     */
    set url(value) {
        this.#url = value;
        this.browser.SetURL(value);
    }

    /**
     * @description 获取URL
     * @return {String} url
     */
    get url() {
        return this.#url;
    }

    /**
     * @description 设置CEF浏览器页面是否可见
     * @param {Boolean} value
     */
    set visible(value) {
        this.browser.CEF.SetVisibility(value ? 0 : 2);
    }

    /**
     * @description 设置CEF浏览器穿透阈值,范围为(0, 1),当页面透明度高于此值时,光标将无法透过浏览器拾取到3D场景
     * @param {Number} value - 最高穿透阈值 (默认为0.03)
     */
    set transparencyThreshold(value) {
        this.browser.CEF.CEFBrowser.SetTransparencyThreshold(value);
    }

    /**
     * @function
     * @description 唤起CEF的DevTool
     */
    showDevTools() {
        this.browser.CEF.CEFBrowser.ShowDevTools();
    }

    /**
     * @description 在CEF浏览器中执行一段javascript代码,并回调返回
     * @param {String} js - javascript snippet
     * @param {Function} callback - callback with string 
     * @param {String} bindName - callback router inside html document
     * @todo
     */
    executeJavascript(js, callback = null, bindName = 'webbrowser') {

    }
}

module.exports = UWebBrowser;