Fixed recording bug

This commit is contained in:
kunalgosar 2017-03-07 17:19:21 -08:00
parent 1e9623e2f2
commit d2a2ba1846

View file

@ -2000,6 +2000,11 @@ void AvatarData::fromJson(const QJsonObject& json, bool useFrameSkeleton) {
} }
} }
auto currentBasis = getRecordingBasis();
if (!currentBasis) {
currentBasis = std::make_shared<Transform>(Transform::fromJson(json[JSON_AVATAR_BASIS]));
}
if (json.contains(JSON_AVATAR_RELATIVE)) { if (json.contains(JSON_AVATAR_RELATIVE)) {
// During playback you can either have the recording basis set to the avatar current state // During playback you can either have the recording basis set to the avatar current state
// meaning that all playback is relative to this avatars starting position, or // meaning that all playback is relative to this avatars starting position, or
@ -2008,15 +2013,14 @@ void AvatarData::fromJson(const QJsonObject& json, bool useFrameSkeleton) {
// The first is more useful for playing back recordings on your own avatar, while // The first is more useful for playing back recordings on your own avatar, while
// the latter is more useful for playing back other avatars within your scene. // the latter is more useful for playing back other avatars within your scene.
auto currentBasis = getRecordingBasis();
if (!currentBasis) {
currentBasis = std::make_shared<Transform>(Transform::fromJson(json[JSON_AVATAR_BASIS]));
}
auto relativeTransform = Transform::fromJson(json[JSON_AVATAR_RELATIVE]); auto relativeTransform = Transform::fromJson(json[JSON_AVATAR_RELATIVE]);
auto worldTransform = currentBasis->worldTransform(relativeTransform); auto worldTransform = currentBasis->worldTransform(relativeTransform);
setPosition(worldTransform.getTranslation()); setPosition(worldTransform.getTranslation());
setOrientation(worldTransform.getRotation()); setOrientation(worldTransform.getRotation());
} else {
// We still set the position in the case that there is no movement.
setPosition(currentBasis->getTranslation());
setOrientation(currentBasis->getRotation());
} }
if (json.contains(JSON_AVATAR_SCALE)) { if (json.contains(JSON_AVATAR_SCALE)) {