Merge pull request #6786 from AlessandroSigna/overlays

Thread-safe access to EntityTree in OverlayPanel
This commit is contained in:
Brad Hefta-Gaub 2016-01-19 09:02:45 -08:00
commit fca5b29e6f

View file

@ -170,9 +170,13 @@ void OverlayPanel::applyTransformTo(Transform& transform, bool force) {
transform.setTranslation(DependencyManager::get<AvatarManager>()->getMyAvatar() transform.setTranslation(DependencyManager::get<AvatarManager>()->getMyAvatar()
->getPosition()); ->getPosition());
} else if (!_anchorPositionBindEntity.isNull()) { } else if (!_anchorPositionBindEntity.isNull()) {
transform.setTranslation(DependencyManager::get<EntityScriptingInterface>() EntityTreePointer entityTree = DependencyManager::get<EntityScriptingInterface>()->getEntityTree();
->getEntityTree()->findEntityByID(_anchorPositionBindEntity) entityTree->withReadLock([&] {
->getPosition()); EntityItemPointer foundEntity = entityTree->findEntityByID(_anchorPositionBindEntity);
if (foundEntity) {
transform.setTranslation(foundEntity->getPosition());
}
});
} else { } else {
transform.setTranslation(getAnchorPosition()); transform.setTranslation(getAnchorPosition());
} }
@ -181,9 +185,13 @@ void OverlayPanel::applyTransformTo(Transform& transform, bool force) {
transform.setRotation(DependencyManager::get<AvatarManager>()->getMyAvatar() transform.setRotation(DependencyManager::get<AvatarManager>()->getMyAvatar()
->getOrientation()); ->getOrientation());
} else if (!_anchorRotationBindEntity.isNull()) { } else if (!_anchorRotationBindEntity.isNull()) {
transform.setRotation(DependencyManager::get<EntityScriptingInterface>() EntityTreePointer entityTree = DependencyManager::get<EntityScriptingInterface>()->getEntityTree();
->getEntityTree()->findEntityByID(_anchorRotationBindEntity) entityTree->withReadLock([&] {
->getRotation()); EntityItemPointer foundEntity = entityTree->findEntityByID(_anchorRotationBindEntity);
if (foundEntity) {
transform.setRotation(foundEntity->getRotation());
}
});
} else { } else {
transform.setRotation(getAnchorRotation()); transform.setRotation(getAnchorRotation());
} }