Render the billboard if we don't have both models. Closes #2178.

This commit is contained in:
Andrzej Kapolka 2014-03-03 15:33:37 -08:00
parent e9908aff7c
commit 75c9e44545
3 changed files with 10 additions and 6 deletions

View file

@ -112,7 +112,8 @@ glm::quat Avatar::getWorldAlignedOrientation () const {
} }
float Avatar::getLODDistance() const { float Avatar::getLODDistance() const {
return glm::distance(Application::getInstance()->getCamera()->getPosition(), _position) / _scale; return Application::getInstance()->getAvatarManager().getLODDistanceMultiplier() *
glm::distance(Application::getInstance()->getCamera()->getPosition(), _position) / _scale;
} }
void Avatar::simulate(float deltaTime) { void Avatar::simulate(float deltaTime) {
@ -305,13 +306,11 @@ glm::quat Avatar::computeRotationFromBodyToWorldUp(float proportion) const {
} }
void Avatar::renderBody() { void Avatar::renderBody() {
if (_shouldRenderBillboard) { if (_shouldRenderBillboard || !(_skeletonModel.isRenderable() && getHead()->getFaceModel().isRenderable())) {
// render the billboard until both models are loaded
renderBillboard(); renderBillboard();
return; return;
} }
if (!(_skeletonModel.isRenderable() && getHead()->getFaceModel().isRenderable())) {
return; // wait until both models are loaded
}
_skeletonModel.render(1.0f); _skeletonModel.render(1.0f);
getHead()->render(1.0f); getHead()->render(1.0f);
getHand()->render(false); getHand()->render(false);

View file

@ -23,7 +23,8 @@
const QUuid MY_AVATAR_KEY; // NULL key const QUuid MY_AVATAR_KEY; // NULL key
AvatarManager::AvatarManager(QObject* parent) : AvatarManager::AvatarManager(QObject* parent) :
_avatarFades() { _avatarFades(),
_lodDistanceMultiplier(1.0f) {
// register a meta type for the weak pointer we'll use for the owning avatar mixer for each avatar // register a meta type for the weak pointer we'll use for the owning avatar mixer for each avatar
qRegisterMetaType<QWeakPointer<Node> >("NodeWeakPointer"); qRegisterMetaType<QWeakPointer<Node> >("NodeWeakPointer");
_myAvatar = QSharedPointer<MyAvatar>(new MyAvatar()); _myAvatar = QSharedPointer<MyAvatar>(new MyAvatar());

View file

@ -33,6 +33,8 @@ public:
void clearOtherAvatars(); void clearOtherAvatars();
float getLODDistanceMultiplier() const { return _lodDistanceMultiplier; }
public slots: public slots:
void processAvatarMixerDatagram(const QByteArray& datagram, const QWeakPointer<Node>& mixerWeakPointer); void processAvatarMixerDatagram(const QByteArray& datagram, const QWeakPointer<Node>& mixerWeakPointer);
@ -52,6 +54,8 @@ private:
QVector<AvatarSharedPointer> _avatarFades; QVector<AvatarSharedPointer> _avatarFades;
QSharedPointer<MyAvatar> _myAvatar; QSharedPointer<MyAvatar> _myAvatar;
float _lodDistanceMultiplier;
}; };
#endif /* defined(__hifi__AvatarManager__) */ #endif /* defined(__hifi__AvatarManager__) */