Do not work with raw pointer in CollisionPickResult::compareAndProcessNewResult

This commit is contained in:
sabrina-shanman 2018-07-30 15:10:21 -07:00
parent 41a8deb575
commit fadc094a01

View file

@ -69,14 +69,12 @@ public:
bool checkOrFilterAgainstMaxDistance(float maxDistance) override { return true; } bool checkOrFilterAgainstMaxDistance(float maxDistance) override { return true; }
PickResultPointer compareAndProcessNewResult(const PickResultPointer& newRes) override { PickResultPointer compareAndProcessNewResult(const PickResultPointer& newRes) override {
const std::shared_ptr<CollisionPickResult> newCollisionResult = std::static_pointer_cast<CollisionPickResult>(*const_cast<PickResultPointer*>(&newRes)); const std::shared_ptr<CollisionPickResult> newCollisionResult = std::static_pointer_cast<CollisionPickResult>(newRes);
// Have to reference the raw pointer to work around strange type conversion errors
CollisionPickResult* newCollisionResultRaw = const_cast<CollisionPickResult*>(newCollisionResult.get());
for (EntityIntersection& intersectingEntity : newCollisionResultRaw->intersectingEntities) { for (EntityIntersection& intersectingEntity : newCollisionResult->intersectingEntities) {
intersectingEntities.push_back(intersectingEntity); intersectingEntities.push_back(intersectingEntity);
} }
for (EntityIntersection& intersectingAvatar : newCollisionResultRaw->intersectingAvatars) { for (EntityIntersection& intersectingAvatar : newCollisionResult->intersectingAvatars) {
intersectingAvatars.push_back(intersectingAvatar); intersectingAvatars.push_back(intersectingAvatar);
} }