|
@@ -53538,44 +53538,58 @@
|
|
|
|
|
|
intervalTool:{ //延时update,防止卡顿
|
|
|
list:[],
|
|
|
-
|
|
|
- /* isWaiting:function(name, func, delayTime){
|
|
|
- if(!this.list.includes(name)){ //如果没有该项, 则开始判断
|
|
|
- var needWait = func(); //触发了改变,则等待一段时间后再自动判断
|
|
|
- if(needWait){
|
|
|
- this.list.push(name);
|
|
|
- setTimeout(()=>{
|
|
|
- var a = this.list.indexOf(name);
|
|
|
+
|
|
|
+ /* isWaiting:function(name, func, delayTime ){
|
|
|
+ let item = this.list.find(e=>e.name == name)
|
|
|
+ if(!item){ //如果没有该项, 则加入循环
|
|
|
+ let ifContinue = func()
|
|
|
+ item = {name}
|
|
|
+ this.list.push(item);
|
|
|
+ setTimeout(()=>{
|
|
|
+ var a = this.list.indexOf(item);
|
|
|
this.list.splice(a,1);
|
|
|
- this.isWaiting(name, func, delayTime) //循环
|
|
|
+ if(item.requestUpdate || ifContinue ) this.isWaiting(name, func, delayTime) //循环
|
|
|
},delayTime)
|
|
|
- }
|
|
|
+
|
|
|
+ }else{//如果有该项,说明现在请求下一次继续更新
|
|
|
+ //if(delayTime == 0){//想立刻更新一次
|
|
|
+ // func()
|
|
|
+ //}else{
|
|
|
+ item.requestUpdate = true
|
|
|
+ //}
|
|
|
+
|
|
|
}
|
|
|
}, */
|
|
|
|
|
|
|
|
|
-
|
|
|
isWaiting:function(name, func, delayTime/* , autoCycle */){
|
|
|
let item = this.list.find(e=>e.name == name);
|
|
|
if(!item){ //如果没有该项, 则加入循环
|
|
|
let ifContinue = func();
|
|
|
- item = {name};
|
|
|
+ item = {name, func, delayTime};
|
|
|
this.list.push(item);
|
|
|
setTimeout(()=>{
|
|
|
var a = this.list.indexOf(item);
|
|
|
this.list.splice(a,1);
|
|
|
+ let {func, delayTime} = item;
|
|
|
if(item.requestUpdate || ifContinue ) this.isWaiting(name, func, delayTime); //循环
|
|
|
},delayTime);
|
|
|
|
|
|
}else {//如果有该项,说明现在请求下一次继续更新
|
|
|
- /* if(delayTime == 0){//想立刻更新一次
|
|
|
- func()
|
|
|
- }else{ */
|
|
|
+ //if(delayTime == 0){//想立刻更新一次
|
|
|
+ // func()
|
|
|
+ //}else{
|
|
|
+ //更新属性
|
|
|
+ item.func = func;
|
|
|
+ item.delayTime = delayTime;
|
|
|
item.requestUpdate = true;
|
|
|
+
|
|
|
+
|
|
|
//}
|
|
|
|
|
|
}
|
|
|
},
|
|
|
+
|
|
|
}
|
|
|
,
|
|
|
pushToGroupAuto : function(items, groups, recognizeFunction){//自动分组。 items是将分到一起的组合。items.length = 1 or 2.
|
|
@@ -76056,6 +76070,8 @@ void main()
|
|
|
|
|
|
this.testMaxNodeCount ++;
|
|
|
viewer.testMaxNodeCount ++;
|
|
|
+ //console.log('testMaxNodeCount', this.testMaxNodeCount)
|
|
|
+
|
|
|
if(this.testMaxNodeCount > 100){
|
|
|
console.log('testMaxNodeLevel次数超出,强制结束:',this.dataset_id, this.nodeMaxLevel, this.nodeMaxLevelPredict.min);
|
|
|
this.testMaxNodeLevelDone = 'moreThanMaxCount';
|
|
@@ -76462,7 +76478,7 @@ void main()
|
|
|
num_ = Math.pow(num_, 1.05) * 6;
|
|
|
|
|
|
|
|
|
- nodeMaxLevel = viewer.testMaxNodeCount > Potree.config.testNodeCount1 ? this.nodeMaxLevel : this.nodeMaxLevelPredict.max; //防止刚开始因nodeMaxLevel没涨完,导致过大的点云突然出现
|
|
|
+ nodeMaxLevel = this.testMaxNodeCount > Potree.config.testNodeCount1 ? this.nodeMaxLevel : this.nodeMaxLevelPredict.max; //防止刚开始因nodeMaxLevel没涨完,导致过大的点云突然出现
|
|
|
|
|
|
if(sizeFitToLevel || Potree.settings.sizeFitToLevel){//按照点云质量来调整的版本: 近似将pointSizeType换成ADAPTIVE
|
|
|
let str = this.temp.pointSize+':'+this.maxLevel+':'+ nodeMaxLevel;
|
|
@@ -91820,7 +91836,7 @@ void main()
|
|
|
viewer.mainViewport.camera = viewer.scene.cameraO; //先设置为cameraO, 才能计算top
|
|
|
viewer.setCameraMode(CameraMode.ORTHOGRAPHIC); //updateScreenSize set cameraO.top
|
|
|
|
|
|
- navCubeViewer.controls.setEnable(false);
|
|
|
+ this.controls.setEnable(false);
|
|
|
|
|
|
//假设保持到目前中心的视角范围不变
|
|
|
this.splitScreen.setShiftTarget(viewer.mainViewport, viewer.bound.center);
|
|
@@ -91920,11 +91936,17 @@ void main()
|
|
|
|
|
|
|
|
|
if(startCamera){
|
|
|
+ if(endCamera == viewer.scene.cameraO){
|
|
|
+ this.controls.setEnable(false);
|
|
|
+ }
|
|
|
+ this.controls.setEnable(false);
|
|
|
view.tranCamera(viewer.mainViewport, { position:viewInfo.position,
|
|
|
endPitch: viewInfo.pitch, endYaw: viewInfo.yaw ,
|
|
|
startCamera, endCamera, midCamera:viewer.scene.cameraBasic ,
|
|
|
callback:()=>{
|
|
|
-
|
|
|
+ if(endCamera != viewer.scene.cameraO){
|
|
|
+ this.controls.setEnable(true);
|
|
|
+ }
|
|
|
},
|
|
|
}, 500);
|
|
|
}
|
|
@@ -136456,23 +136478,29 @@ ENDSEC
|
|
|
|
|
|
{
|
|
|
let updated, zoomLevel;
|
|
|
- this.addEventListener('camera_changed', e => {
|
|
|
-
|
|
|
- if(e.viewport == this.mainViewport && (e.changeInfo.positionChanged || zoomLevel != this.images360.zoomLevel)){
|
|
|
+ let update = (e)=>{
|
|
|
+ if(e.type == 'updateModelBound' || e.viewport == this.mainViewport && (e.changeInfo.positionChanged || zoomLevel != this.images360.zoomLevel)){
|
|
|
zoomLevel = this.images360.zoomLevel; //对updateMarkerVisibles有影响
|
|
|
//e.changeInfo.positionChanged && shelterHistory.clear() //清空
|
|
|
- e.changeInfo.positionChanged && this.updateDatasetAt(); //更新所在数据集
|
|
|
+ (e.type == 'updateModelBound' || e.changeInfo.positionChanged) && this.updateDatasetAt(); //更新所在数据集
|
|
|
|
|
|
if(Potree.settings.ifShowMarker && Potree.settings.editType != 'merge'){
|
|
|
|
|
|
- Common$1.intervalTool.isWaiting('updateMarkerVisibles', ()=>{
|
|
|
+ Common$1. intervalTool.isWaiting('updateMarkerVisibles', ()=>{
|
|
|
if(!this.mainViewport.view.isFlying() ){
|
|
|
this.updateMarkerVisibles();
|
|
|
}
|
|
|
},500);
|
|
|
}
|
|
|
}
|
|
|
- });
|
|
|
+
|
|
|
+ };
|
|
|
+ this.addEventListener('camera_changed', update);
|
|
|
+ this.addEventListener('updateModelBound', update);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
this.addEventListener('showMarkerChanged',()=>{
|
|
|
this.updatePanosVisibles(this.modules.SiteModel.currentFloor);
|
|
|
this.updateMarkerVisibles();
|
|
@@ -136706,28 +136734,25 @@ ENDSEC
|
|
|
}
|
|
|
|
|
|
updateDatasetAt(force){//更新所在数据集
|
|
|
-
|
|
|
+
|
|
|
let fun = ()=>{
|
|
|
let currPos = viewer.mainViewport.view.position;
|
|
|
-
|
|
|
- //if(force || !currPos.equals(this.lastPos)){
|
|
|
- //this.lastPos.copy(currPos)
|
|
|
-
|
|
|
- var at = this.scene.pointclouds.filter(e=>
|
|
|
- (e.visible || e.unvisibleReasons && e.unvisibleReasons.length == 1 && e.unvisibleReasons[0].reason == 'displayMode')
|
|
|
- && e.ifContainsPoint(currPos)
|
|
|
- );
|
|
|
-
|
|
|
- if(Common$1.getDifferenceSet(at, this.atDatasets).length){
|
|
|
- //console.log('atDatasets', at)
|
|
|
- this.atDatasets = at;
|
|
|
-
|
|
|
- this.dispatchEvent({type:'pointcloudAtChange',pointclouds:at});
|
|
|
- }
|
|
|
- force = false;
|
|
|
+
|
|
|
+ var at = this.scene.pointclouds.filter(e=>
|
|
|
+ (e.visible || e.unvisibleReasons && e.unvisibleReasons.length == 1 && e.unvisibleReasons[0].reason == 'displayMode')
|
|
|
+ && e.ifContainsPoint(currPos)
|
|
|
+ );
|
|
|
+
|
|
|
+ if(Common$1.getDifferenceSet(at, this.atDatasets).length){
|
|
|
+ //console.log('atDatasets', at)
|
|
|
+ this.atDatasets = at;
|
|
|
|
|
|
- };
|
|
|
- //}
|
|
|
+ this.dispatchEvent({type:'pointcloudAtChange',pointclouds:at});
|
|
|
+ }
|
|
|
+ force = false;
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
if(force)fun();
|
|
|
else Common$1.intervalTool.isWaiting('atWhichDataset', fun , 300);
|
|
|
|
|
@@ -136887,13 +136912,15 @@ ENDSEC
|
|
|
|
|
|
//促使点云加载出最高级别
|
|
|
testPointcloudsMaxLevel(){ //所有点云都无需testMaxNodeLevel 就停止
|
|
|
- let camera_changed, count = 0;
|
|
|
+ let camera_changed, count = 0, camera;
|
|
|
let test = (e={})=>{
|
|
|
camera_changed = true;
|
|
|
- let camera = e.camera || this.scene.getActiveCamera();
|
|
|
|
|
|
- Common$1.intervalTool.isWaiting('testPointcloudsMaxLevel', ()=>{
|
|
|
+ camera = e.camera || this.scene.getActiveCamera();
|
|
|
+
|
|
|
+ Common$1.intervalTool.isWaiting('testPointcloudsMaxLevel', ()=>{
|
|
|
if(!camera_changed && count>50 || Potree.settings.displayMode == 'showPanos' )return //只有当camera_changed后才继续循环, 除了最开始几次需要连续加载下
|
|
|
+
|
|
|
camera_changed = false;
|
|
|
count ++;
|
|
|
//console.log('testPointcloudsMaxLevel中',count)
|