Don't render avatars until they've been simulated, init before first simulate.

Closes #2262.
This commit is contained in:
Andrzej Kapolka 2014-03-11 13:46:58 -07:00
parent c09b5aec5e
commit 35d0fa7189
2 changed files with 7 additions and 8 deletions

View file

@ -54,6 +54,9 @@ void AvatarManager::updateOtherAvatars(float deltaTime) {
++avatarIterator;
continue;
}
if (!avatar->isInitialized()) {
avatar->init();
}
if (avatar->getOwningAvatarMixer()) {
// this avatar's mixer is still around, go ahead and simulate it
avatar->simulate(deltaTime);
@ -80,7 +83,7 @@ void AvatarManager::renderAvatars(bool forShadowMapOrMirror, bool selfAvatarOnly
foreach (const AvatarSharedPointer& avatarPointer, _avatarHash) {
Avatar* avatar = static_cast<Avatar*>(avatarPointer.data());
if (!avatar->isInitialized()) {
avatar->init();
continue;
}
if (avatar == static_cast<Avatar*>(_myAvatar.data())) {
_myAvatar->render(forShadowMapOrMirror);

View file

@ -19,18 +19,14 @@ SkeletonModel::SkeletonModel(Avatar* owningAvatar) :
}
void SkeletonModel::simulate(float deltaTime, bool delayLoad) {
if (!isActive()) {
Model::simulate(deltaTime, delayLoad);
return;
}
setTranslation(_owningAvatar->getPosition());
setRotation(_owningAvatar->getOrientation() * glm::angleAxis(180.0f, glm::vec3(0.0f, 1.0f, 0.0f)));
const float MODEL_SCALE = 0.0006f;
setScale(glm::vec3(1.0f, 1.0f, 1.0f) * _owningAvatar->getScale() * MODEL_SCALE);
Model::simulate(deltaTime, delayLoad);
if (!_owningAvatar->isMyAvatar()) {
if (!(isActive() && _owningAvatar->isMyAvatar())) {
return; // only simulate for own avatar
}