From 43290d3c5dd3bd9501fcad4858652bc1d7736a6f Mon Sep 17 00:00:00 2001 From: bach Date: Thu, 14 Sep 2023 09:50:07 +0200 Subject: [PATCH] better mouseover mapitem mvt stop --- src/components/ConcernementMapItem.vue | 50 ++++++++++++------------ src/components/MapConcernements.vue | 54 +++++++++++++------------- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/src/components/ConcernementMapItem.vue b/src/components/ConcernementMapItem.vue index e70abe3..db3ab2c 100644 --- a/src/components/ConcernementMapItem.vue +++ b/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() }, diff --git a/src/components/MapConcernements.vue b/src/components/MapConcernements.vue index 70d41be..8072989 100644 --- a/src/components/MapConcernements.vue +++ b/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 () {