Преглед на файлове

better mouseover mapitem mvt stop

bach преди 1 година
родител
ревизия
43290d3c5d
променени са 2 файла, в които са добавени 52 реда и са изтрити 52 реда
  1. 24 26
      src/components/ConcernementMapItem.vue
  2. 28 26
      src/components/MapConcernements.vue

+ 24 - 26
src/components/ConcernementMapItem.vue

@@ -1256,15 +1256,18 @@ export default {
       // hightlight superposed entites on focus
       let entites_superposes = this.paper_main_object.children['entites_superposes'];
       // console.log('entites_superposes.children', entites_superposes.children);
-      for(let paper_item of entites_superposes.children) {
-        if (this.is_hover) {
-          paper_item.definition = this.paper_symbol_definitions.entite_hover;
-          paper_item.scale(2)
-        } else {
-          paper_item.definition = this.paper_symbol_definitions.entite;
-          paper_item.scale(0.5)
+      if(entites_superposes){
+        for(let paper_item of entites_superposes.children) {
+          if (this.is_hover) {
+            paper_item.definition = this.paper_symbol_definitions.entite_hover;
+            paper_item.scale(2)
+          } else {
+            paper_item.definition = this.paper_symbol_definitions.entite;
+            paper_item.scale(0.5)
+          }
         }
       }
+
     },
     // PAPER EVENTS
     initPaperEvents(){
@@ -1625,14 +1628,19 @@ export default {
         ) {
           this.pushAside()
         }
-      } else if (this.map_mode === 'proximite' 
-        || this.map_mode === 'superposition'
-        || this.map_mode === 'puissancedagir'
-        || this.map_mode === 'action'
-        || this.map_mode === 'doleancer'){ // apply focus forces : move unfocused on the sides and focused on the center
-        this.applyFocusForces(); //
+      } else if (!this.is_hover){
+        if (this.map_mode === 'proximite' 
+          || this.map_mode === 'superposition'
+          || this.map_mode === 'puissancedagir'
+          || this.map_mode === 'action'
+          || this.map_mode === 'doleancer'){ // apply focus forces : move unfocused on the sides and focused on the center
+          this.applyFocusForces(); //
+        } else {
+          this.applyNormalForces(); // if terrain de vie apply force to gently reject items from the sides and so create a continuasly mvmt
+        }
       } else {
-        this.applyNormalForces(); // if terrain de vie apply force to gently reject items from the sides and so create a continuasly mvmt
+        // stop movement if is mouse hover
+        Matter.Body.setVelocity(this.body, {x:0, y:0})
       }
       
       // reset all matter rotation forces otherwise items will spin when colide 
@@ -1951,18 +1959,8 @@ export default {
     onAfterEngineUpdate (event) {
       this.respawn();
 
-      // stop item on mouse hover 
-      // if (this.hover_elmt && this.hover_elmt.id === this.id) {
-      //   // Matter.Body.setStatic(this.body, true);
-      // } else {
-      //   // Matter.Body.setStatic(this.body, false);
-      // }
-      if (this.is_hover) { // if mouse hover reset the matter body position to prev position
-        Matter.Body.setPosition(this.body, {x:this.pos.x, y:this.pos.y}, true);
-      }else{ // else move following the matter body position
-        this.paper_main_object.position = this.pos = this.body.position;
-      }
-      
+      this.paper_main_object.position = this.pos = this.body.position;
+
       this.handlePaperVisibilityOnAfterEnginUpdate()
 
     },

+ 28 - 26
src/components/MapConcernements.vue

@@ -1191,34 +1191,36 @@ export default {
 
     },
     onAfterEngineUpdate(){
-
       // // START OF DEBUGGING
-      // // draw lines of constraints for debuging
-      // let constraints_lines = this.paper.project.getItem({name: 'constraints_lines', class: paper.Group});
-      // if (constraints_lines) {
-      //   constraints_lines.removeChildren();
-      // }else{
-      //   constraints_lines = new paper.Group({
-      //     pivot: new paper.Point({x:0,y:0}),
-      //     name: 'constraints_lines',
-      //   });
-      // }
-      // let all_constrains = Matter.Composite.allConstraints(this.world);
-      // let children = [];
-      // for(let constraint of all_constrains){
-      //   // console.log('constrain', constraint);
-      //   let pointAWorld = Matter.Constraint.pointAWorld(constraint);
-      //   let pointBWorld = Matter.Constraint.pointBWorld(constraint);
-      //   // console.log('pointAWorld, pointBWorld', pointAWorld, pointBWorld);
-      //   children.push(new paper.Path.Line({
-      //     from: [pointAWorld.x, pointAWorld.y],
-      //     to: [pointBWorld.x, pointBWorld.y],
-      //     strokeColor: '#f00',
-      //     strokeWidth: 1
-      //   }));
-      // }
-      // constraints_lines.addChildren(children);
+      // this.debugDrawConstraints()  
       // // END OF DEBUGGING
+    },
+    debugDrawConstraints(){
+      // draw lines of constraints for debuging
+      let constraints_lines = this.paper.project.getItem({name: 'constraints_lines', class: paper.Group});
+      if (constraints_lines) {
+        constraints_lines.removeChildren();
+      }else{
+        constraints_lines = new paper.Group({
+          pivot: new paper.Point({x:0,y:0}),
+          name: 'constraints_lines',
+        });
+      }
+      let all_constrains = Matter.Composite.allConstraints(this.world);
+      let children = [];
+      for(let constraint of all_constrains){
+        // console.log('constrain', constraint);
+        let pointAWorld = Matter.Constraint.pointAWorld(constraint);
+        let pointBWorld = Matter.Constraint.pointBWorld(constraint);
+        // console.log('pointAWorld, pointBWorld', pointAWorld, pointBWorld);
+        children.push(new paper.Path.Line({
+          from: [pointAWorld.x, pointAWorld.y],
+          to: [pointBWorld.x, pointBWorld.y],
+          strokeColor: '#f00',
+          strokeWidth: 1
+        }));
+      }
+      constraints_lines.addChildren(children);
     }
   },
   beforeUpdate () {