0
0
Fork 0
mirror of https://github.com/liabru/matter-js.git synced 2025-01-12 16:08:50 -05:00

Merge branch 'pr/522'

* pr/522:
  Fixed end collision triggering more than once
  removal of unnecessary variable activePairs
  fixed code style
  aglorithm optimization of Pairs.update method
This commit is contained in:
liabru 2018-06-12 11:46:48 +01:00
commit c04536f2c0
2 changed files with 7 additions and 3 deletions

View file

@ -33,6 +33,7 @@ var Contact = require('./Contact');
activeContacts: [], activeContacts: [],
separation: 0, separation: 0,
isActive: true, isActive: true,
confirmedActive: true,
isSensor: bodyA.isSensor || bodyB.isSensor, isSensor: bodyA.isSensor || bodyB.isSensor,
timeCreated: timestamp, timeCreated: timestamp,
timeUpdated: timestamp, timeUpdated: timestamp,

View file

@ -44,7 +44,6 @@ var Common = require('../core/Common');
collisionStart = pairs.collisionStart, collisionStart = pairs.collisionStart,
collisionEnd = pairs.collisionEnd, collisionEnd = pairs.collisionEnd,
collisionActive = pairs.collisionActive, collisionActive = pairs.collisionActive,
activePairIds = [],
collision, collision,
pairId, pairId,
pair, pair,
@ -55,12 +54,15 @@ var Common = require('../core/Common');
collisionEnd.length = 0; collisionEnd.length = 0;
collisionActive.length = 0; collisionActive.length = 0;
for (i = 0; i < pairsList.length; i++) {
pairsList[i].confirmedActive = false;
}
for (i = 0; i < collisions.length; i++) { for (i = 0; i < collisions.length; i++) {
collision = collisions[i]; collision = collisions[i];
if (collision.collided) { if (collision.collided) {
pairId = Pair.id(collision.bodyA, collision.bodyB); pairId = Pair.id(collision.bodyA, collision.bodyB);
activePairIds.push(pairId);
pair = pairsTable[pairId]; pair = pairsTable[pairId];
@ -76,6 +78,7 @@ var Common = require('../core/Common');
// update the pair // update the pair
Pair.update(pair, collision, timestamp); Pair.update(pair, collision, timestamp);
pair.confirmedActive = true;
} else { } else {
// pair did not exist, create a new pair // pair did not exist, create a new pair
pair = Pair.create(collision, timestamp); pair = Pair.create(collision, timestamp);
@ -91,7 +94,7 @@ var Common = require('../core/Common');
// deactivate previously active pairs that are now inactive // deactivate previously active pairs that are now inactive
for (i = 0; i < pairsList.length; i++) { for (i = 0; i < pairsList.length; i++) {
pair = pairsList[i]; pair = pairsList[i];
if (pair.isActive && Common.indexOf(activePairIds, pair.id) === -1) { if (pair.isActive && !pair.confirmedActive) {
Pair.setActive(pair, false, timestamp); Pair.setActive(pair, false, timestamp);
collisionEnd.push(pair); collisionEnd.push(pair);
} }