|
@@ -63666,7 +63666,7 @@ void main() {
|
|
|
viewer.setFOV(config$1.view.fov);
|
|
|
viewer.loadSettingsFromURL();
|
|
|
{
|
|
|
- viewer.mainViewport.view.position.set(100,100,200);
|
|
|
+ viewer.mainViewport.view.position.set(30,30,30);
|
|
|
viewer.mainViewport.view.lookAt(0,0,0);
|
|
|
|
|
|
viewer.updateModelBound();//init
|
|
@@ -63788,11 +63788,11 @@ void main() {
|
|
|
|
|
|
let modelType, modelEditing, MergeEditor = viewer.modules.MergeEditor;
|
|
|
Potree.addModel = function(prop, done, onProgress, onError){ //加载模型
|
|
|
- let isFirstLoad = prop.bottom == void 0;//在编辑时用户添加的
|
|
|
+
|
|
|
|
|
|
let loadDone = (model)=>{
|
|
|
|
|
|
- if(isFirstLoad){
|
|
|
+ if(prop.isFirstLoad){
|
|
|
modelEditing = model;
|
|
|
MergeEditor.setModelBtmHeight(model, 0); //默认离地高度为0
|
|
|
viewer.addEventListener('global_mousemove', moveModel);
|
|
@@ -84035,6 +84035,7 @@ void main() {
|
|
|
pointclouds = PanoEditor.selectedClouds;
|
|
|
}
|
|
|
}else {
|
|
|
+ PanoEditor.dispatchEvent('needToDisConnect');
|
|
|
console.warn('选中的漫游点连通了整个数据集,不允许移动');
|
|
|
}
|
|
|
}
|
|
@@ -84510,7 +84511,7 @@ void main() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if(this.canMovePos(this.currentViewport) ){
|
|
|
+ if(this.canMovePos(this.currentViewport) && !this.lockKey){
|
|
|
if(this.lockElevation){
|
|
|
let dir = view.direction;
|
|
|
dir.z = 0;
|
|
@@ -115154,7 +115155,7 @@ ENDSEC
|
|
|
else this.selectModel(this.selected, false, ifFocus, by2d);
|
|
|
}
|
|
|
this.selected = model;
|
|
|
- ifFocus && MergeEditor.focusOnSelect(model); //通过在场景里点击模型的话,不focus
|
|
|
+ ifFocus && MergeEditor.focusOn(model); //通过在场景里点击模型的话,不focus
|
|
|
viewer.outlinePass.selectedObjects = [model];
|
|
|
|
|
|
if(model.isPointcloud){
|
|
@@ -115179,7 +115180,7 @@ ENDSEC
|
|
|
},
|
|
|
|
|
|
|
|
|
- /* focusOnSelect(object, duration = 400){
|
|
|
+ /* focusOn(object, duration = 400){
|
|
|
let boundingBox = object.boundingBox.clone().applyMatrix4(object.matrixWorld)
|
|
|
let center = boundingBox.getCenter(new THREE.Vector3)
|
|
|
let size = boundingBox.getSize(new THREE.Vector3)
|
|
@@ -115199,8 +115200,14 @@ ENDSEC
|
|
|
}) //setView can cancel bump
|
|
|
|
|
|
}, */
|
|
|
- focusOnSelect(object, duration = 400){
|
|
|
- let boundingBox = object.boundingBox.clone().applyMatrix4(object.matrixWorld);
|
|
|
+ focusOn(objects, duration = 400){
|
|
|
+ if(!(objects instanceof Array)){
|
|
|
+ objects = [objects];
|
|
|
+ }
|
|
|
+ let boundingBox = new Box3;
|
|
|
+ objects.forEach(object=>{
|
|
|
+ boundingBox.union(object.boundingBox.clone().applyMatrix4(object.matrixWorld));
|
|
|
+ });
|
|
|
viewer.focusOnObject({boundingBox}, 'boundingBox', duration );
|
|
|
|
|
|
},
|
|
@@ -119034,7 +119041,7 @@ ENDSEC
|
|
|
|
|
|
|
|
|
|
|
|
- if(name == 'mainView'){
|
|
|
+ if(name == 'mainView'){
|
|
|
viewer.mainViewport.alignment = null;
|
|
|
viewer.scene.pointclouds.forEach(e=>{
|
|
|
e.material.activeAttributeName = 'rgba';
|
|
@@ -119066,6 +119073,9 @@ ENDSEC
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ viewer.fpControls.lockKey = false;
|
|
|
+
|
|
|
}else {
|
|
|
if(prop.openCount == 0){//只需执行一次
|
|
|
this.viewportFitBound(name, boundSize, center);
|
|
@@ -119092,7 +119102,8 @@ ENDSEC
|
|
|
if(name == 'right'){
|
|
|
viewer.mainViewport.alignment = {translate:true, rotateSide:true};
|
|
|
}
|
|
|
-
|
|
|
+ viewer.fpControls.lockKey = true;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
this.setZoomInState(false); //取消放大模式
|
|
@@ -119385,9 +119396,16 @@ ENDSEC
|
|
|
|
|
|
let old = this.operation;
|
|
|
this.operation = state ? name : null;
|
|
|
- if(this.selectedLine){
|
|
|
- this.selectedLine.dispatchEvent('click');//删除
|
|
|
- }
|
|
|
+
|
|
|
+ if(this.operation == 'removeLink'){
|
|
|
+ if(this.selectedLine){
|
|
|
+ this.selectedLine.dispatchEvent('click');//删除
|
|
|
+ }
|
|
|
+ if(this.selectedPano){
|
|
|
+ this.selectedPano.circle.dispatchEvent('click');//删除
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if(this.operation != 'addLink'){
|
|
|
this.linkGuideLine.visible = false;
|
|
|
}
|
|
@@ -119430,25 +119448,30 @@ ENDSEC
|
|
|
|
|
|
|
|
|
|
|
|
- groupChange(pano0, pano1, type){//修改group
|
|
|
+ groupChange(pano0, pano1, type){//修改group (type == 'remove'时,pano1可以为空)
|
|
|
if(type == 'add'){
|
|
|
Common.pushToGroupAuto([pano0, pano1], this.panoGroup );
|
|
|
}else {
|
|
|
- let atGroup = this.panoGroup.find(e=>e.includes(pano0) && e.includes(pano1));//所在组
|
|
|
+ let atGroup = this.panoGroup.find(e=>e.includes(pano0) && (e.includes(pano1) || !pano1));//所在组
|
|
|
|
|
|
if(!atGroup){
|
|
|
- return console.log('这两个pano原本就不在一个组', pano0.id, pano1.id)
|
|
|
+ if(pano1){
|
|
|
+ console.log('这两个pano原本就不在一个组', pano0.id, pano1.id);
|
|
|
+ }else {
|
|
|
+ console.log('pano0不在任何组', pano0);
|
|
|
+ }
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
//断开连接时,因为组内没有其他成员的连接信息,所以需要清除整组,并将剩余的一个个重新连接
|
|
|
this.panoGroup.splice(this.panoGroup.indexOf(atGroup),1); //删除
|
|
|
|
|
|
|
|
|
- atGroup.forEach(pano=>{//然后再重新生成这两个和组的关系,各组分组
|
|
|
+ atGroup.forEach(pano=>{//然后再重新生成这两个和组的关系,各自分组
|
|
|
if(pano == pano0 || pano == pano1)return
|
|
|
- for(let i in this.panoLink[pano.id]){
|
|
|
- if(this.panoLink[pano.id][i]){
|
|
|
- let pano_ = images360.getPano(i);
|
|
|
+ for(let id in this.panoLink[pano.id]){
|
|
|
+ if(this.panoLink[pano.id][id]){
|
|
|
+ let pano_ = images360.getPano(id);
|
|
|
Common.pushToGroupAuto([pano, pano_], this.panoGroup );
|
|
|
}
|
|
|
}
|
|
@@ -119459,16 +119482,38 @@ ENDSEC
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- linkChange(pano0, pano1, type){//修改link
|
|
|
+ linkChange(pano0, pano1, type){//修改link (type == 'remove'时,pano1可以为空)
|
|
|
+
|
|
|
|
|
|
+ let temp = [];
|
|
|
+
|
|
|
if(type == 'add'){
|
|
|
+ if(!pano1)return console.error('不支持add时pano1为空')
|
|
|
this.panoLink[pano0.id][pano1.id] = this.panoLink[pano0.id][pano1.id] || {};
|
|
|
this.panoLink[pano1.id][pano0.id] = this.panoLink[pano1.id][pano0.id] || {};
|
|
|
+ }else {
|
|
|
+ if(!pano1){
|
|
|
+ for(let id in this.panoLink[pano0.id]){
|
|
|
+ if(this.panoLink[pano0.id][id]){
|
|
|
+ this.panoLink[id][pano0.id] = false;
|
|
|
+ temp.push(id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.panoLink[pano0.id] = {}; //全部断连
|
|
|
+ }else {
|
|
|
+ this.panoLink[pano0.id][pano1.id] = false;
|
|
|
+ this.panoLink[pano1.id][pano0.id] = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!pano1){ //全部断连
|
|
|
+ temp.forEach(id=>{
|
|
|
+ this.lineChange(pano0, images360.getPano(id) , type);
|
|
|
+ });
|
|
|
}else {
|
|
|
- this.panoLink[pano0.id][pano1.id] = false;
|
|
|
- this.panoLink[pano1.id][pano0.id] = false;
|
|
|
+ this.lineChange(pano0, pano1, type);
|
|
|
}
|
|
|
- this.lineChange(pano0, pano1, type);
|
|
|
+
|
|
|
this.groupChange(pano0, pano1, type);
|
|
|
|
|
|
//this.updateSelectGroup()
|
|
@@ -119614,7 +119659,12 @@ ENDSEC
|
|
|
this.hoverPano(pano,false);
|
|
|
});
|
|
|
circle.addEventListener('click', ()=>{
|
|
|
- if(this.activeViewName == 'mainView')return
|
|
|
+ //if(this.activeViewName == 'mainView')return
|
|
|
+
|
|
|
+ if(this.operation == 'removeLink'){
|
|
|
+ this.linkChange(pano, null, 'remove'); //删除所有连接
|
|
|
+ }
|
|
|
+
|
|
|
if(this.selectedPano == circle.pano) return this.selectPano(null)
|
|
|
if(this.operation == 'addLink' && this.selectedPano){
|
|
|
this.linkChange(this.selectedPano, circle.pano, 'add');
|
|
@@ -119625,7 +119675,9 @@ ENDSEC
|
|
|
// this.linkChange(this.selectedPano, circle.pano, 'remove')
|
|
|
// //this.setLinkOperateState('removeLink',false)
|
|
|
// return
|
|
|
- // }
|
|
|
+ // }
|
|
|
+
|
|
|
+
|
|
|
this.selectPano(circle.pano);
|
|
|
});
|
|
|
|
|
@@ -119646,7 +119698,7 @@ ENDSEC
|
|
|
pano.hovered = true;
|
|
|
|
|
|
|
|
|
- if(this.activeViewName == 'mainView' || Alignment$1.handleState && this.selectedPano && this.selectedPano == pano)return
|
|
|
+ if(/* this.activeViewName == 'mainView' || */Alignment$1.handleState && this.selectedPano && this.selectedPano == pano)return
|
|
|
|
|
|
if(this.operation != 'addLink' || !this.selectedPano || this.selectedPano == pano){ // this.selectedPano == pano?
|
|
|
viewer.dispatchEvent({
|