Threadsafe access to EntityTree in OverlayPanel

This commit is contained in:
AlessandroSigna 2016-01-06 16:17:28 -08:00
parent bc538a0f7d
commit 7b74f7407a

View file

@ -170,9 +170,10 @@ 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()); transform.setTranslation(entityTree->findEntityByID(_anchorPositionBindEntity)->getPosition());
});
} else { } else {
transform.setTranslation(getAnchorPosition()); transform.setTranslation(getAnchorPosition());
} }
@ -181,9 +182,10 @@ 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()); transform.setRotation(entityTree->findEntityByID(_anchorRotationBindEntity)->getRotation());
});
} else { } else {
transform.setRotation(getAnchorRotation()); transform.setRotation(getAnchorRotation());
} }