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;