c-frame / aframe-physics-system

community-maintained fork of n5ro's aframe-physics-system
https://c-frame.github.io/aframe-physics-system/
MIT License
43 stars 11 forks source link

[Ammo] Not all collision event fireing (issue with remove entities) #47

Closed smeybi closed 7 months ago

smeybi commented 1 year ago

When using ammo, and physics objects are removed, the collision event does not work properly anymore. There are dropouts in between.

If Ammo.destroy(this.body); is replaced by this.system.driver.removeBody(this.body); it works. with remove: element in line 16560

here is the whole element from line 16560: remove: function() { if (this.triMesh) Ammo.destroy(this.triMesh); if (this.localScaling) Ammo.destroy(this.localScaling); if (this.compoundShape) Ammo.destroy(this.compoundShape); if (this.body) {
// Ammo.destroy(this.body);
this.system.driver.removeBody(this.body) delete this.body;
} Ammo.destroy(this.rbInfo); Ammo.destroy(this.msTransform); Ammo.destroy(this.motionState); Ammo.destroy(this.localInertia); Ammo.destroy(this.rotation); },

For example it works, remove the ammo body and the object3D separate, not problem

document.querySelector('a-scene').systems.physics.driver.removeBody(e.target.body)
e.target.object3D.parent.remove(e.target.object3D)

i have reported this before here: https://github.com/n5ro/aframe-physics-system/issues/137#issuecomment-878697924

here is a new glitch to see the error: (Comment out the new script 'aframe-physic-system-fix.js' aframe-physic-system.js is the original. perhaps increase the number and speed of boxes on powerful computers to see the error) https://aframe-physics-system-remove-bug.glitch.me

diarmidmackenzie commented 1 year ago

Thanks for (re) reporting this.

There seem to be a whole load of things that are set up on ammo-body initialization that aren't cleared up on removal.

Here's an attempt at a fix: https://github.com/c-frame/aframe-physics-system/pull/48

Do you have an established way of testing this? Any feedback would be welcome.

diarmidmackenzie commented 1 year ago

Have a glitch for testing this: https://aframe-physics-system-issue-47.glitch.me/ - see #48 for details. Fix seems to not be working yet.

diarmidmackenzie commented 1 year ago

I think we should close this on the basis that we have an adequate fix here: https://github.com/c-frame/aframe-physics-system/pull/52

OK?

diarmidmackenzie commented 11 months ago

Updated test here to point to a build with fix #57 in place, and it seems to be working correctly.