|
@@ -650,23 +650,29 @@ export class Viewer extends ViewerBase{
|
|
|
|
|
|
{
|
|
{
|
|
let updated, zoomLevel
|
|
let updated, zoomLevel
|
|
- this.addEventListener('camera_changed', e => {
|
|
|
|
-
|
|
|
|
- if(e.viewport == this.mainViewport && (e.changeInfo.positionChanged || zoomLevel != this.images360.zoomLevel)){
|
|
|
|
- zoomLevel = this.images360.zoomLevel //对updateMarkerVisibles有影响
|
|
|
|
|
|
+ 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 && shelterHistory.clear() //清空
|
|
- e.changeInfo.positionChanged && this.updateDatasetAt() //更新所在数据集
|
|
|
|
|
|
+ (e.type == 'updateModelBound' || e.changeInfo.positionChanged) && this.updateDatasetAt() //更新所在数据集
|
|
|
|
|
|
if(Potree.settings.ifShowMarker && Potree.settings.editType != 'merge'){
|
|
if(Potree.settings.ifShowMarker && Potree.settings.editType != 'merge'){
|
|
|
|
|
|
- Common.intervalTool.isWaiting('updateMarkerVisibles', ()=>{
|
|
|
|
|
|
+ Common. intervalTool.isWaiting('updateMarkerVisibles', ()=>{
|
|
if(!this.mainViewport.view.isFlying() ){
|
|
if(!this.mainViewport.view.isFlying() ){
|
|
this.updateMarkerVisibles()
|
|
this.updateMarkerVisibles()
|
|
}
|
|
}
|
|
},500)
|
|
},500)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- })
|
|
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ this.addEventListener('camera_changed', update)
|
|
|
|
+ this.addEventListener('updateModelBound', update)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
this.addEventListener('showMarkerChanged',()=>{
|
|
this.addEventListener('showMarkerChanged',()=>{
|
|
this.updatePanosVisibles(this.modules.SiteModel.currentFloor)
|
|
this.updatePanosVisibles(this.modules.SiteModel.currentFloor)
|
|
this.updateMarkerVisibles()
|
|
this.updateMarkerVisibles()
|
|
@@ -900,28 +906,25 @@ export class Viewer extends ViewerBase{
|
|
}
|
|
}
|
|
|
|
|
|
updateDatasetAt(force){//更新所在数据集
|
|
updateDatasetAt(force){//更新所在数据集
|
|
-
|
|
|
|
|
|
+
|
|
let fun = ()=>{
|
|
let fun = ()=>{
|
|
let currPos = viewer.mainViewport.view.position
|
|
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.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.getDifferenceSet(at, this.atDatasets).length){
|
|
|
|
+ //console.log('atDatasets', at)
|
|
|
|
+ this.atDatasets = at
|
|
|
|
|
|
|
|
+ this.dispatchEvent({type:'pointcloudAtChange',pointclouds:at})
|
|
}
|
|
}
|
|
- //}
|
|
|
|
|
|
+ force = false
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
if(force)fun()
|
|
if(force)fun()
|
|
else Common.intervalTool.isWaiting('atWhichDataset', fun , 300)
|
|
else Common.intervalTool.isWaiting('atWhichDataset', fun , 300)
|
|
|
|
|
|
@@ -1081,13 +1084,15 @@ export class Viewer extends ViewerBase{
|
|
|
|
|
|
//促使点云加载出最高级别
|
|
//促使点云加载出最高级别
|
|
testPointcloudsMaxLevel(){ //所有点云都无需testMaxNodeLevel 就停止
|
|
testPointcloudsMaxLevel(){ //所有点云都无需testMaxNodeLevel 就停止
|
|
- let camera_changed, count = 0
|
|
|
|
|
|
+ let camera_changed, count = 0, camera
|
|
let test = (e={})=>{
|
|
let test = (e={})=>{
|
|
camera_changed = true
|
|
camera_changed = true
|
|
- let camera = e.camera || this.scene.getActiveCamera()
|
|
|
|
|
|
|
|
- Common.intervalTool.isWaiting('testPointcloudsMaxLevel', ()=>{
|
|
|
|
|
|
+ camera = e.camera || this.scene.getActiveCamera()
|
|
|
|
+
|
|
|
|
+ Common.intervalTool.isWaiting('testPointcloudsMaxLevel', ()=>{
|
|
if(!camera_changed && count>50 || Potree.settings.displayMode == 'showPanos' )return //只有当camera_changed后才继续循环, 除了最开始几次需要连续加载下
|
|
if(!camera_changed && count>50 || Potree.settings.displayMode == 'showPanos' )return //只有当camera_changed后才继续循环, 除了最开始几次需要连续加载下
|
|
|
|
+
|
|
camera_changed = false
|
|
camera_changed = false
|
|
count ++;
|
|
count ++;
|
|
//console.log('testPointcloudsMaxLevel中',count)
|
|
//console.log('testPointcloudsMaxLevel中',count)
|