Problem this feature should fix
Nothing can stop two specific actors from colliding. PhysicsEngine::Consider adds every body with m_world->addRigidBody(&body), without collision group or mask, and there is no layer system anywhere in the engine.
The workarounds are all global : SetTrigger drops the contact response against everything, SetEnabled(false) takes the body out of the world. Nothing says that a projectile ignores the actor that fired it, or that two vehicles pass through each other while still colliding with the rest of the scene.
Expected solution
A per pair ignore on PhysicalObject, exposed on the component in Lua :
bullet:GetPhysicalObject():SetIgnoreCollision(shooter:GetPhysicalObject(), true)
Bullet already has btCollisionObject::setIgnoreCollisionCheck, so the engine side is a wrapper over it.
Two points to settle : the ignore list lives on the btRigidBody, which RecreateBody throws away on a kinematic, scale or shape change, so it has to be carried over the way BodySettings carries the rest of the body state. And an ignored pair produces no contact at all, so collision and trigger events stop firing between the two
Problem this feature should fix
Nothing can stop two specific actors from colliding.
PhysicsEngine::Consideradds every body withm_world->addRigidBody(&body), without collision group or mask, and there is no layer system anywhere in the engine.The workarounds are all global :
SetTriggerdrops the contact response against everything,SetEnabled(false)takes the body out of the world. Nothing says that a projectile ignores the actor that fired it, or that two vehicles pass through each other while still colliding with the rest of the scene.Expected solution
A per pair ignore on
PhysicalObject, exposed on the component in Lua :Bullet already has
btCollisionObject::setIgnoreCollisionCheck, so the engine side is a wrapper over it.Two points to settle : the ignore list lives on the
btRigidBody, whichRecreateBodythrows away on a kinematic, scale or shape change, so it has to be carried over the wayBodySettingscarries the rest of the body state. And an ignored pair produces no contact at all, so collision and trigger events stop firing between the two