diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index d526ffec0d..d0b79723d1 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -275,6 +275,7 @@ public: void setIgnoreForCollisions(bool value) { _ignoreForCollisions = value; } uint8_t getCollisionMask() const { return _collisionMask; } + uint8_t getFinalCollisionMask() const { return _ignoreForCollisions ? 0 : _collisionMask; } void setCollisionMask(uint8_t value) { _collisionMask = value; } bool getCollisionsWillMove() const { return _collisionsWillMove; } @@ -446,6 +447,7 @@ protected: bool _visible; bool _ignoreForCollisions; uint8_t _collisionMask { ENTITY_COLLISION_MASK_DEFAULT }; + uint8_t _collisionGroupOverride; bool _collisionsWillMove; bool _locked; QString _userData; diff --git a/libraries/physics/src/EntityMotionState.cpp b/libraries/physics/src/EntityMotionState.cpp index f75469e820..2c09c3aa55 100644 --- a/libraries/physics/src/EntityMotionState.cpp +++ b/libraries/physics/src/EntityMotionState.cpp @@ -644,7 +644,7 @@ void EntityMotionState::computeCollisionGroupAndMask(int16_t& group, int16_t& ma mask = PhysicsEngine::getCollisionMask(group); if (_entity) { - uint8_t entityCollisionMask = _entity->getCollisionMask(); + uint8_t entityCollisionMask = _entity->getFinalCollisionMask(); if ((bool)(entityCollisionMask & USER_COLLISION_GROUP_MY_AVATAR) != (bool)(entityCollisionMask & USER_COLLISION_GROUP_OTHER_AVATAR)) { // asymmetric avatar collision mask bits