|
@@ -53704,7 +53704,13 @@
|
|
|
|
|
|
},
|
|
|
|
|
|
-
|
|
|
+ getRootWindow(){
|
|
|
+ let win = window;
|
|
|
+ while(win.parent!=win){
|
|
|
+ win = win.parent;
|
|
|
+ }
|
|
|
+ return win
|
|
|
+ },
|
|
|
|
|
|
|
|
|
};
|
|
@@ -90834,7 +90840,7 @@ void main()
|
|
|
this.domElement.addEventListener('keydown', this.onKeyDown.bind(this));
|
|
|
window.addEventListener('keyup', this.onKeyUp.bind(this));
|
|
|
|
|
|
- //window.addEventListener('focus',()=>{
|
|
|
+
|
|
|
window.addEventListener('blur',this.onKeyUp.bind(this)); //add
|
|
|
|
|
|
|
|
@@ -129676,14 +129682,18 @@ ENDSEC
|
|
|
|
|
|
|
|
|
|
|
|
- function getGpuMemoryUsage(){//总的
|
|
|
+ function getGpuMemoryUsage(win = window){//总的
|
|
|
let c = 0;
|
|
|
viewer.objs.children.filter(e=>{
|
|
|
if(e.fileType == '3dTiles'){
|
|
|
let tileset3D = e.runtime.getTileset();
|
|
|
c += tileset3D.gpuMemoryUsageInBytes;
|
|
|
}
|
|
|
- });
|
|
|
+ });
|
|
|
+
|
|
|
+ if(win.parent != win){//还有父级页面。 暂时只有子级需要考虑父级,假设父级在前台时子级已经销毁
|
|
|
+ c += getGpuMemoryUsage(win.parent);
|
|
|
+ }
|
|
|
return c
|
|
|
}
|
|
|
|
|
@@ -138904,7 +138914,7 @@ ENDSEC
|
|
|
}
|
|
|
|
|
|
get isVisibleAndInRequestVolume() {
|
|
|
- return /* this._visible && */this._inRequestVolume; //用_updateBoundingVolume这个算的在相机靠近时不准确,容易缺块
|
|
|
+ return /* this._visible && */this.tileset.visible && this._inRequestVolume; //用_updateBoundingVolume这个算的在相机靠近时不准确,容易缺块
|
|
|
}
|
|
|
|
|
|
get hasRenderContent() {
|
|
@@ -138977,8 +138987,7 @@ ENDSEC
|
|
|
const rootScreenSpaceError = traverser.root ? traverser.root._screenSpaceError : 0.0;
|
|
|
let v = Math.max(rootScreenSpaceError - screenSpaceError, 0);
|
|
|
if(!this._visible){
|
|
|
- v = THREE.Math.clamp(v * 0.1, -0.9, 100);//xzw add
|
|
|
- console.log('v',v);
|
|
|
+ v = THREE.Math.clamp(v * 0.1, -0.9, 100);//xzw add 因为this._visible我也令其显示所以这里降低这些的优先级
|
|
|
}
|
|
|
return v
|
|
|
}
|
|
@@ -139569,6 +139578,10 @@ ENDSEC
|
|
|
_defineProperty(this, "frameStateData", void 0);
|
|
|
|
|
|
_defineProperty(this, "maximumMemoryUsage", void 0);
|
|
|
+
|
|
|
+
|
|
|
+ _defineProperty(this, "visible", true);//add
|
|
|
+
|
|
|
|
|
|
assert$7(json);
|
|
|
this.options = { ...DEFAULT_PROPS,
|
|
@@ -147622,7 +147635,7 @@ ENDSEC
|
|
|
lastRootTransform rootTransformInverse
|
|
|
|
|
|
tileset._loadTiles 依次加载tiles
|
|
|
- request.priority = request.getPriority(request.handle); 加载优先级
|
|
|
+ _getPriority 加载优先级 加了一句
|
|
|
|
|
|
|
|
|
笔记:
|
|
@@ -150501,11 +150514,19 @@ ENDSEC
|
|
|
|
|
|
let mapArea;
|
|
|
let shelterHistory = [];
|
|
|
- Potree.isIframeChild = window.parent!=window; //子页面
|
|
|
-
|
|
|
-
|
|
|
|
|
|
|
|
|
+ Potree.isIframeChild = window.parent!=window; //子页面
|
|
|
+ if(Potree.isIframeChild){
|
|
|
+ let rootWin = Common$1.getRootWindow();
|
|
|
+ rootWin.viewer.dispatchEvent({type:'createIframe', window}); //给祖先页面发送信息
|
|
|
+ }
|
|
|
+ window.addEventListener('focus',()=>{
|
|
|
+ console.log('focus',window.winIndex);
|
|
|
+ });
|
|
|
+ window.addEventListener('blur',()=>{
|
|
|
+ console.log('blur',window.winIndex);
|
|
|
+ });
|
|
|
|
|
|
class Viewer extends ViewerBase{
|
|
|
|
|
@@ -151183,6 +151204,21 @@ ENDSEC
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ if(!Potree.isIframeChild){
|
|
|
+ window.winIndex = 0;
|
|
|
+ let index = 1;
|
|
|
+ this.addEventListener('createIframe',(e)=>{//创建了子页面
|
|
|
+ let child = e.window;
|
|
|
+ child.winIndex = index ++;
|
|
|
+
|
|
|
+
|
|
|
+ });
|
|
|
+ //不知道删除iframe时是否那些模型还在内存里,需要释放吗? 如果要需要加一个事件
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/* {
|
|
|
let setInteract = ()=>{
|
|
|
this.interacted = true //标记这一帧用户有操作屏幕
|
|
@@ -155222,9 +155258,8 @@ ENDSEC
|
|
|
});
|
|
|
console.log(result);
|
|
|
result.model.runtime = result.runtime;
|
|
|
- loadDone(result.model/* , null, fileInfo.url */);
|
|
|
-
|
|
|
-
|
|
|
+ loadDone(result.model/* , null, fileInfo.url */);
|
|
|
+
|
|
|
|
|
|
let loaded = false;
|
|
|
let tileset = result.runtime.getTileset();
|
|
@@ -155238,6 +155273,21 @@ ENDSEC
|
|
|
let opacity = result.model.opacity;
|
|
|
MergeEditor.changeOpacity(e.tileContent,opacity);
|
|
|
});
|
|
|
+
|
|
|
+ {
|
|
|
+ let vi = true;
|
|
|
+ Object.defineProperty( result.model, "visible", {
|
|
|
+ get: function() {
|
|
|
+ return vi
|
|
|
+ },
|
|
|
+ set: function(v) {
|
|
|
+ vi = v;
|
|
|
+ tileset.visible = v; //同步,使不加载
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|