collisionMask shouldn't override ignoreForCollisions

This commit is contained in:
U-GAPOS\andrew 2016-01-13 16:58:34 -08:00
parent 3aa1837e07
commit 0126684a96
2 changed files with 3 additions and 1 deletions

View file

@ -275,6 +275,7 @@ public:
void setIgnoreForCollisions(bool value) { _ignoreForCollisions = value; } void setIgnoreForCollisions(bool value) { _ignoreForCollisions = value; }
uint8_t getCollisionMask() const { return _collisionMask; } uint8_t getCollisionMask() const { return _collisionMask; }
uint8_t getFinalCollisionMask() const { return _ignoreForCollisions ? 0 : _collisionMask; }
void setCollisionMask(uint8_t value) { _collisionMask = value; } void setCollisionMask(uint8_t value) { _collisionMask = value; }
bool getCollisionsWillMove() const { return _collisionsWillMove; } bool getCollisionsWillMove() const { return _collisionsWillMove; }
@ -446,6 +447,7 @@ protected:
bool _visible; bool _visible;
bool _ignoreForCollisions; bool _ignoreForCollisions;
uint8_t _collisionMask { ENTITY_COLLISION_MASK_DEFAULT }; uint8_t _collisionMask { ENTITY_COLLISION_MASK_DEFAULT };
uint8_t _collisionGroupOverride;
bool _collisionsWillMove; bool _collisionsWillMove;
bool _locked; bool _locked;
QString _userData; QString _userData;

View file

@ -644,7 +644,7 @@ void EntityMotionState::computeCollisionGroupAndMask(int16_t& group, int16_t& ma
mask = PhysicsEngine::getCollisionMask(group); mask = PhysicsEngine::getCollisionMask(group);
if (_entity) { if (_entity) {
uint8_t entityCollisionMask = _entity->getCollisionMask(); uint8_t entityCollisionMask = _entity->getFinalCollisionMask();
if ((bool)(entityCollisionMask & USER_COLLISION_GROUP_MY_AVATAR) != if ((bool)(entityCollisionMask & USER_COLLISION_GROUP_MY_AVATAR) !=
(bool)(entityCollisionMask & USER_COLLISION_GROUP_OTHER_AVATAR)) { (bool)(entityCollisionMask & USER_COLLISION_GROUP_OTHER_AVATAR)) {
// asymmetric avatar collision mask bits // asymmetric avatar collision mask bits