xzw 9 月之前
父節點
當前提交
9263fe3c50
共有 2 個文件被更改,包括 26 次插入11 次删除
  1. 2 4
      src/custom/objects/Tag.js
  2. 24 7
      src/custom/objects/tool/Path.js

+ 2 - 4
src/custom/objects/Tag.js

@@ -136,10 +136,8 @@ class Tag extends THREE.Shim.FollowRootObject{
     
     bindEvent(){
         
-        let hoverState = {
-            line:0,spot:0,label:0
-        }
-        let grabbingObject
+        let hoverState = {}, grabbingObject 
+        
         let setDragPointState = (state)=>{
             this.lineDragPoint.material = state ? dragPointMat.hover : dragPointMat.default
             this.spot.material.opacity = state ? 0.5 : 1 

+ 24 - 7
src/custom/objects/tool/Path.js

@@ -170,6 +170,7 @@ export class Path extends ctrlPolygon{
             this.titleLabel.sprite.material.depthTest = false
             let line = LineDraw.createFatLine([new THREE.Vector3(0,0,0), new THREE.Vector3(0,0, this.titleLineHeight)],  Object.assign({},depthProps,{color: '#ffffff', lineWidth: 1, transparent:true, fadeFar: this.fadeFar}))
             line.renderOrder = Potree.config.renderOrders.line
+            line.name = 'line'
             this.titleLine = line
             group.add(line)
             group.add(this.titleLabel)
@@ -195,20 +196,36 @@ export class Path extends ctrlPolygon{
             this.lineDragPoint.renderOrder = this.lineDragPoint.pickOrder = 10;
             this.titleLabel.add(this.lineDragPoint) 
             
+            let hoverState = {}, grabbingObject  
+            let setDragPointState = (state)=>{
+                this.lineDragPoint.material = state ? dragPointMat.hover : dragPointMat.default 
+                this.titleLabel.sprite.material.opacity = state ? 0.5 : 1 
+            }
             
-            line.addEventListener('mouseover',(e)=>{ 
-                this.editEnable && CursorDeal.add('hoverGrab') 
-            });
+            let ifHover = ()=>{ 
+                if(this.editEnable && Object.values(hoverState).some(e=>e)){     
+                    CursorDeal.remove('hoverGrab')
+                }else{
+                    CursorDeal.add('hoverGrab')
+                }
+            }
+            [line, this.lineDragPoint].forEach(e=>e.addEventListener('mouseover',(e)=>{ 
+                hoverState[e.target.name] = 1 
+                ifHover()
+            }));
+            [line, this.lineDragPoint].forEach(e=>e.addEventListener('mouseleave',(e)=>{ 
+                hoverState[e.target.name] = 0
+                ifHover()
+            }));
+            
+             
             line.addEventListener('startDragging',(e)=>{  
                 this.editEnable && CursorDeal.add('grabbing') 
             });
             line.addEventListener('drop',(e)=>{  
                 this.editEnable && CursorDeal.remove('grabbing')
             });
-            line.addEventListener('mouseleave',(e)=>{  
-                this.editEnable && CursorDeal.remove('hoverGrab') 
-                
-            });
+             
             line.addEventListener('drag',(e)=>{    
                 if(this.editEnable){//一旦用户拖动了title,title就固定了,不再随着path居中
                     let position