|
@@ -1,5 +1,60 @@
|
|
-const log$a = new Logger("xverse-bus")
|
|
|
|
-class EngineProxy{
|
|
|
|
|
|
+//const logger = new Logger("xverse-bus")
|
|
|
|
+import {logger} from "./Logger.js"
|
|
|
|
+import CircularArray from "./CircularArray.js"
|
|
|
|
+import AssetTypeName from "./enum/AssetTypeName.js"
|
|
|
|
+import AssetClassName from "./enum/AssetClassName.js"
|
|
|
|
+import LoggerLevels from "./enum/LoggerLevels.js"
|
|
|
|
+import EShaderMode from "./enum/EShaderMode.js"
|
|
|
|
+import Http from "./Http.js"
|
|
|
|
+import XSceneManager from "./XSceneManager.js"
|
|
|
|
+
|
|
|
|
+const http = new Http
|
|
|
|
+ , isIndexedDbSupported = ()=>(window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB) !== void 0
|
|
|
|
+ , blobToDataURI = async i=>new Promise((e,t)=>{
|
|
|
|
+ const r = new FileReader;
|
|
|
|
+ r.readAsDataURL(i),
|
|
|
|
+ r.onload = function(n) {
|
|
|
|
+ var o;
|
|
|
|
+ e((o = n.target) == null ? void 0 : o.result)
|
|
|
|
+ }
|
|
|
|
+ ,
|
|
|
|
+ r.onerror = function(n) {
|
|
|
|
+ t(n)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+)
|
|
|
|
+ , dataURItoBlob = i=>{
|
|
|
|
+ let e;
|
|
|
|
+ i.split(",")[0].indexOf("base64") >= 0 ? e = atob(i.split(",")[1]) : e = unescape(i.split(",")[1]);
|
|
|
|
+ const t = i.split(",")[0].split(":")[1].split(";")[0]
|
|
|
|
+ , r = new Uint8Array(e.length);
|
|
|
|
+ for (let o = 0; o < e.length; o++)
|
|
|
|
+ r[o] = e.charCodeAt(o);
|
|
|
|
+ return new Blob([r],{
|
|
|
|
+ type: t
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+ , urlMap = new Map
|
|
|
|
+ , urlTransformer = async(i,e=!1)=>typeof i != "string" ? (console.warn("url transformer error", i),
|
|
|
|
+i) : i.startsWith("blob:") ? i : e ? http.get({
|
|
|
|
+ url: i,
|
|
|
|
+ useIndexedDb: !0,
|
|
|
|
+ key: "url",
|
|
|
|
+ isOutPutObjectURL: !1
|
|
|
|
+}) : urlMap.has(i) ? urlMap.get(i) : http.get({
|
|
|
|
+ url: i,
|
|
|
|
+ useIndexedDb: !0,
|
|
|
|
+ key: "url"
|
|
|
|
+}).then(t=>(urlMap.set(i, t),
|
|
|
|
+t));
|
|
|
|
+
|
|
|
|
+let sceneManager;
|
|
|
|
+function getSceneManager(i, e) {
|
|
|
|
+ return sceneManager || (sceneManager = new XSceneManager(i,e)),
|
|
|
|
+ sceneManager
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+export default class EngineProxy{
|
|
constructor(e) {
|
|
constructor(e) {
|
|
E(this, "_tvs", []);
|
|
E(this, "_tvs", []);
|
|
E(this, "isRenderFirstFrame", !1);
|
|
E(this, "isRenderFirstFrame", !1);
|
|
@@ -27,7 +82,7 @@ class EngineProxy{
|
|
E(this, "systemStuckCnt", 0);
|
|
E(this, "systemStuckCnt", 0);
|
|
E(this, "frameRenderNumber", 0);
|
|
E(this, "frameRenderNumber", 0);
|
|
E(this, "_setFPS", (e,t=25)=>{
|
|
E(this, "_setFPS", (e,t=25)=>{
|
|
- log$a.info("Set fps to", t);
|
|
|
|
|
|
+ logger.info("Set fps to", t);
|
|
const r = t > 60 ? 60 : t < 24 ? 24 : t;
|
|
const r = t > 60 ? 60 : t < 24 ? 24 : t;
|
|
e.Engine.stopRenderLoop();
|
|
e.Engine.stopRenderLoop();
|
|
const n = 1e3 / r;
|
|
const n = 1e3 / r;
|
|
@@ -56,15 +111,15 @@ class EngineProxy{
|
|
this._checkSceneFrameCount > ye._CHECK_DURATION && (this._checkSceneDurationFrameNum = ye._CHECK_DURATION,
|
|
this._checkSceneFrameCount > ye._CHECK_DURATION && (this._checkSceneDurationFrameNum = ye._CHECK_DURATION,
|
|
this._checkSceneFrameCount = 0,
|
|
this._checkSceneFrameCount = 0,
|
|
this._checkSceneNotReadyCount++,
|
|
this._checkSceneNotReadyCount++,
|
|
- (this._checkSceneNotReadyCount == 1 || this._checkSceneNotReadyCount % 100 == 0) && log$a.error(`[SDK] Scene not ready, skip render. loop: ${this._checkSceneNotReadyCount}`),
|
|
|
|
- this._checkSceneNotReadyCount > 10 && (log$a.error("[SDK] Scene not ready, reload later"),
|
|
|
|
|
|
+ (this._checkSceneNotReadyCount == 1 || this._checkSceneNotReadyCount % 100 == 0) && logger.error(`[SDK] Scene not ready, skip render. loop: ${this._checkSceneNotReadyCount}`),
|
|
|
|
+ this._checkSceneNotReadyCount > 10 && (logger.error("[SDK] Scene not ready, reload later"),
|
|
this.room.proxyEvents("renderError", {
|
|
this.room.proxyEvents("renderError", {
|
|
error: new Error("[SDK] Scene not ready, skip render and reload.")
|
|
error: new Error("[SDK] Scene not ready, skip render and reload.")
|
|
})),
|
|
})),
|
|
this.room.stats.assign({
|
|
this.room.stats.assign({
|
|
renderErrorCount: this._checkSceneNotReadyCount
|
|
renderErrorCount: this._checkSceneNotReadyCount
|
|
}),
|
|
}),
|
|
- log$a.infoAndReportMeasurement({
|
|
|
|
|
|
+ logger.infoAndReportMeasurement({
|
|
value: 0,
|
|
value: 0,
|
|
startTime: Date.now(),
|
|
startTime: Date.now(),
|
|
metric: "renderError",
|
|
metric: "renderError",
|
|
@@ -84,7 +139,7 @@ class EngineProxy{
|
|
this.room.stats.assign({
|
|
this.room.stats.assign({
|
|
renderErrorCount: this.renderErrorCount
|
|
renderErrorCount: this.renderErrorCount
|
|
}),
|
|
}),
|
|
- log$a.infoAndReportMeasurement({
|
|
|
|
|
|
+ logger.infoAndReportMeasurement({
|
|
value: 0,
|
|
value: 0,
|
|
startTime: Date.now(),
|
|
startTime: Date.now(),
|
|
metric: "renderError",
|
|
metric: "renderError",
|
|
@@ -162,8 +217,8 @@ class EngineProxy{
|
|
}
|
|
}
|
|
async initEngine(e) {
|
|
async initEngine(e) {
|
|
await this.updateBillboard(),
|
|
await this.updateBillboard(),
|
|
- log$a.info("engine version:", VERSION$1);
|
|
|
|
- const t = new Logger("engine");
|
|
|
|
|
|
+ logger.info("engine version:", VERSION$1);
|
|
|
|
+ const t = logger;
|
|
t.setLevel(LoggerLevels.Warn);
|
|
t.setLevel(LoggerLevels.Warn);
|
|
const r = {
|
|
const r = {
|
|
videoResOriArray: [{
|
|
videoResOriArray: [{
|
|
@@ -224,7 +279,7 @@ class EngineProxy{
|
|
}
|
|
}
|
|
pause() {
|
|
pause() {
|
|
clearTimeout(this.renderTimer),
|
|
clearTimeout(this.renderTimer),
|
|
- log$a.info("Invoke room.pause to pause render");
|
|
|
|
|
|
+ logger.info("Invoke room.pause to pause render");
|
|
const e = {
|
|
const e = {
|
|
roomId: this.room.id,
|
|
roomId: this.room.id,
|
|
effects: [],
|
|
effects: [],
|
|
@@ -237,7 +292,7 @@ class EngineProxy{
|
|
async resume() {
|
|
async resume() {
|
|
this._setFPS(this.room.sceneManager),
|
|
this._setFPS(this.room.sceneManager),
|
|
this.room.sceneManager.cameraComponent.cameraFovChange(this.room.sceneManager.yuvInfo),
|
|
this.room.sceneManager.cameraComponent.cameraFovChange(this.room.sceneManager.yuvInfo),
|
|
- log$a.info("Invoke room.resume to render");
|
|
|
|
|
|
+ logger.info("Invoke room.resume to render");
|
|
const e = this._createAssetList(this.room.skin);
|
|
const e = this._createAssetList(this.room.skin);
|
|
await this.loadAssets(e, "")
|
|
await this.loadAssets(e, "")
|
|
}
|
|
}
|
|
@@ -246,11 +301,11 @@ class EngineProxy{
|
|
this.lightManager || (this.lightManager = this.room.sceneManager.lightComponent),
|
|
this.lightManager || (this.lightManager = this.room.sceneManager.lightComponent),
|
|
e = e || this.room.skin;
|
|
e = e || this.room.skin;
|
|
const t = ModelManager.findModel(e.models, AssetTypeName.Config, AssetClassName.Env);
|
|
const t = ModelManager.findModel(e.models, AssetTypeName.Config, AssetClassName.Env);
|
|
- return t ? (r = this.lightManager) == null ? void 0 : r.setIBL(t.modelUrl) : (log$a.error("env file not found"),
|
|
|
|
|
|
+ return t ? (r = this.lightManager) == null ? void 0 : r.setIBL(t.modelUrl) : (logger.error("env file not found"),
|
|
Promise.resolve())
|
|
Promise.resolve())
|
|
}
|
|
}
|
|
async _parseModelsAndLoad(e, t, r) {
|
|
async _parseModelsAndLoad(e, t, r) {
|
|
- log$a.info("Invoke _parseModelsAndLoad start", t);
|
|
|
|
|
|
+ logger.info("Invoke _parseModelsAndLoad start", t);
|
|
const n = ["airship", "balloon", "default", "ground_feiting", "ground_reqiqiu"]
|
|
const n = ["airship", "balloon", "default", "ground_feiting", "ground_reqiqiu"]
|
|
, o = new Map;
|
|
, o = new Map;
|
|
r == null && (r = "xxxx");
|
|
r == null && (r = "xxxx");
|
|
@@ -315,12 +370,12 @@ class EngineProxy{
|
|
}
|
|
}
|
|
async loadAssets(e, t="", r=8e3) {
|
|
async loadAssets(e, t="", r=8e3) {
|
|
const n = Date.now();
|
|
const n = Date.now();
|
|
- return this._loadAssets(e, t)._timeout(r, new InitEngineTimeoutError(`loadAssets timeout(${r}ms)`)).then(o=>(log$a.infoAndReportMeasurement({
|
|
|
|
|
|
+ return this._loadAssets(e, t)._timeout(r, new InitEngineTimeoutError(`loadAssets timeout(${r}ms)`)).then(o=>(logger.infoAndReportMeasurement({
|
|
tag: "loadAssets",
|
|
tag: "loadAssets",
|
|
startTime: n,
|
|
startTime: n,
|
|
metric: "loadAssets"
|
|
metric: "loadAssets"
|
|
}),
|
|
}),
|
|
- o)).catch(o=>(log$a.infoAndReportMeasurement({
|
|
|
|
|
|
+ o)).catch(o=>(logger.infoAndReportMeasurement({
|
|
tag: "loadAssets",
|
|
tag: "loadAssets",
|
|
startTime: n,
|
|
startTime: n,
|
|
metric: "loadAssets",
|
|
metric: "loadAssets",
|
|
@@ -385,7 +440,7 @@ class EngineProxy{
|
|
),
|
|
),
|
|
t != "" && t != null && this._deleteAssetsLowpolyModel(t);
|
|
t != "" && t != null && this._deleteAssetsLowpolyModel(t);
|
|
const a = e.skinId;
|
|
const a = e.skinId;
|
|
- log$a.info("====> from ", t, " to ", a),
|
|
|
|
|
|
+ logger.info("====> from ", t, " to ", a),
|
|
this._tvs.forEach(f=>f.clean()),
|
|
this._tvs.forEach(f=>f.clean()),
|
|
this._tvs = [];
|
|
this._tvs = [];
|
|
let s = EFitMode.cover;
|
|
let s = EFitMode.cover;
|
|
@@ -402,7 +457,7 @@ class EngineProxy{
|
|
d = await urlTransformer(f.imageUrl)
|
|
d = await urlTransformer(f.imageUrl)
|
|
} catch (_) {
|
|
} catch (_) {
|
|
d = f.imageUrl,
|
|
d = f.imageUrl,
|
|
- log$a.error("urlTransformer error", _)
|
|
|
|
|
|
+ logger.error("urlTransformer error", _)
|
|
}
|
|
}
|
|
this.room.breathPointManager.addBreathPoint({
|
|
this.room.breathPointManager.addBreathPoint({
|
|
id: f.id,
|
|
id: f.id,
|