|
@@ -568,25 +568,24 @@ class NavigationCube{
|
|
|
|
|
|
//不过平板无hover事件
|
|
|
faceMesh.addEventListener('mouseover', (e)=>{
|
|
|
- if(this.changingView)return
|
|
|
+ if(navCubeViewer.changingView)return
|
|
|
faceMesh.material.uniforms.faceColor.value.set(Colors.blue)
|
|
|
//console.log('变', name)
|
|
|
navCubeViewer.dispatchEvent('content_changed')
|
|
|
});
|
|
|
faceMesh.addEventListener('mouseleave', (e)=>{
|
|
|
- if(this.changingView)return
|
|
|
+ if(navCubeViewer.changingView)return
|
|
|
faceMesh.material.uniforms.faceColor.value.set(Colors.black)
|
|
|
//console.log('回', name)
|
|
|
navCubeViewer.dispatchEvent('content_changed')
|
|
|
});
|
|
|
|
|
|
- faceMesh.addEventListener('click', (e)=>{
|
|
|
- this.changingView = true
|
|
|
- faceMesh.material.uniforms.faceColor.value.set(Colors.blue)
|
|
|
- navCubeViewer.switchView('ortho', directions[name] , ()=>{
|
|
|
- this.changingView = false
|
|
|
+ faceMesh.addEventListener('click', (e)=>{
|
|
|
+ if(navCubeViewer.switchView('ortho', directions[name] , ()=>{
|
|
|
faceMesh.material.uniforms.faceColor.value.set(Colors.black)
|
|
|
- })
|
|
|
+ }) ){
|
|
|
+ faceMesh.material.uniforms.faceColor.value.set(Colors.blue)
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
if(name == 'Top'){
|
|
@@ -718,9 +717,17 @@ class NavCubeViewer extends ViewerBase{
|
|
|
margin:{x:300, y:250} ,
|
|
|
} ]
|
|
|
this.splitScreen.splitStart(viewportProps)
|
|
|
+
|
|
|
+
|
|
|
+ viewer.images360.addEventListener('beginChangeMode',(e)=>{
|
|
|
+ if(e.mode == 'showPanos')this.switchView('perspective',{}, ()=>{
|
|
|
+ Potree.settings.displayMode = viewer.images360.latestRequestMode
|
|
|
+ })
|
|
|
+
|
|
|
+ })
|
|
|
})
|
|
|
|
|
|
- //this.addEventListener('resize',(e)=>{console.log('resize',e)})
|
|
|
+
|
|
|
|
|
|
}
|
|
|
|
|
@@ -811,6 +818,7 @@ class NavCubeViewer extends ViewerBase{
|
|
|
}
|
|
|
} */
|
|
|
switchView(type, {yaw, pitch, dir}={}, done){
|
|
|
+ if(this.changingView)return
|
|
|
let view = viewer.mainViewport.view
|
|
|
this.lastView = view.clone()
|
|
|
if(viewer.mainViewport.camera.type == 'OrthographicCamera'){
|
|
@@ -843,14 +851,16 @@ class NavCubeViewer extends ViewerBase{
|
|
|
viewer.scene.cameraO.updateProjectionMatrix();
|
|
|
|
|
|
}
|
|
|
-
|
|
|
+ console.log('变成正交')
|
|
|
viewer.focusOnObject(viewer.bound, 'boundingBox', 1000, {
|
|
|
endPitch: pitch, endYaw: yaw , dir, startCamera, endCamera
|
|
|
}).promise.done(()=>{
|
|
|
- viewer.dispatchEvent('reachTopView')
|
|
|
+ //viewer.dispatchEvent('reachTopView')
|
|
|
+ this.changingView = false
|
|
|
done && done()
|
|
|
navCubeViewer.dispatchEvent('content_changed')
|
|
|
})
|
|
|
+ this.changingView = true
|
|
|
}else{
|
|
|
|
|
|
if(viewer.mainViewport.camera == viewer.scene.cameraO){
|
|
@@ -871,17 +881,19 @@ class NavCubeViewer extends ViewerBase{
|
|
|
let position = new THREE.Vector3().copy(viewer.mainViewport.shiftTarget).sub(view.direction.clone().multiplyScalar(dis));
|
|
|
//view.position.copy(viewer.mainViewport.shiftTarget).sub(view.direction.clone().multiplyScalar(dis));
|
|
|
this.controls.setEnable(true)
|
|
|
- viewer.dispatchEvent('leaveTopView')
|
|
|
-
|
|
|
+ //viewer.dispatchEvent('leaveTopView')
|
|
|
+ console.log('变回透视')
|
|
|
view.tranCamera(viewer.mainViewport, { position ,
|
|
|
callback:()=>{
|
|
|
-
|
|
|
+ done && done()
|
|
|
+ this.changingView = false
|
|
|
}, startCamera:viewer.scene.cameraO, endCamera:viewer.scene.cameraP, midCamera:viewer.scene.cameraBasic
|
|
|
}, 500)
|
|
|
-
|
|
|
+ this.changingView = true
|
|
|
|
|
|
}
|
|
|
}
|
|
|
+ return this.changingView
|
|
|
}
|
|
|
|
|
|
|
|
@@ -889,22 +901,22 @@ class NavCubeViewer extends ViewerBase{
|
|
|
|
|
|
|
|
|
switchView2(viewInfo){ //直接输入view改变
|
|
|
+ if(this.changingView)return
|
|
|
let view = viewer.mainViewport.view
|
|
|
let startCamera, endCamera
|
|
|
-
|
|
|
+ this.changingView = true
|
|
|
|
|
|
if(viewInfo.isOrtho){
|
|
|
- if(viewer.mainViewport.camera != viewer.scene.cameraO){
|
|
|
-
|
|
|
+ if(viewer.mainViewport.camera != viewer.scene.cameraO){
|
|
|
startCamera = viewer.scene.cameraP
|
|
|
endCamera = viewer.scene.cameraO
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
}else{
|
|
|
+
|
|
|
view.moveOrthoCamera(viewer.mainViewport, {endPosition:viewInfo.position,
|
|
|
endPitch: viewInfo.pitch, endYaw: viewInfo.yaw , zoom: viewInfo.zoom,
|
|
|
callback:()=>{
|
|
|
-
|
|
|
+ this.changingView = false
|
|
|
},
|
|
|
}, 500)
|
|
|
}
|
|
@@ -913,11 +925,12 @@ class NavCubeViewer extends ViewerBase{
|
|
|
startCamera = viewer.scene.cameraO
|
|
|
endCamera = viewer.scene.cameraP
|
|
|
}else{
|
|
|
+
|
|
|
view.setView(viewer.mainViewport, { position:view.position,
|
|
|
endPitch: viewInfo.pitch, endYaw: viewInfo.yaw ,
|
|
|
startCamera, endCamera,
|
|
|
callback:()=>{
|
|
|
-
|
|
|
+ this.changingView = false
|
|
|
},
|
|
|
}, 500)
|
|
|
}
|
|
@@ -925,12 +938,12 @@ class NavCubeViewer extends ViewerBase{
|
|
|
}
|
|
|
|
|
|
|
|
|
- if(startCamera){
|
|
|
+ if(startCamera){
|
|
|
view.tranCamera(viewer.mainViewport, { position:viewInfo.position,
|
|
|
endPitch: viewInfo.pitch, endYaw: viewInfo.yaw ,
|
|
|
startCamera, endCamera, midCamera:viewer.scene.cameraBasic ,
|
|
|
callback:()=>{
|
|
|
-
|
|
|
+ this.changingView = false
|
|
|
},
|
|
|
}, 500)
|
|
|
}
|