+ blow(camPos, intersects) {\r
+ let face = intersects[0].face;\r
+ /** vector from cam to intersection (wind) */\r
+ let dir = intersects[0].point.clone().sub(camPos).multiplyScalar(100);\r
+ /** apply to all vertices of affected face */\r
+ this.masses[face.a].addForce(dir);\r
+ this.masses[face.b].addForce(dir);\r
+ this.masses[face.c].addForce(dir);\r
+ }\r
+ drag(mousePosWorld, index) {\r
+ /** calculate vector from vertex to cursor */\r
+ let dir = mousePosWorld.clone().sub(this.masses[index].position).multiplyScalar(200);\r
+ /** apply to grabbed vertex */\r
+ this.masses[index].addForce(dir);\r
+ }\r