mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 17:35:45 +02:00
Fixes for switching between fullAvatar and head & body avatars while in first person.
Need to always add _skeletonModel to the main scene when switching to head/body avatar. Need to always remove _firstPersonSkeletonModel from main scene when switching to head/body avatar.
This commit is contained in:
parent
71639a7466
commit
c480c85f85
1 changed files with 10 additions and 1 deletions
|
@ -993,6 +993,7 @@ QString MyAvatar::getModelDescription() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyAvatar::setFaceModelURL(const QUrl& faceModelURL) {
|
void MyAvatar::setFaceModelURL(const QUrl& faceModelURL) {
|
||||||
|
|
||||||
Avatar::setFaceModelURL(faceModelURL);
|
Avatar::setFaceModelURL(faceModelURL);
|
||||||
render::ScenePointer scene = Application::getInstance()->getMain3DScene();
|
render::ScenePointer scene = Application::getInstance()->getMain3DScene();
|
||||||
getHead()->getFaceModel().setVisibleInScene(_prevShouldDrawHead, scene);
|
getHead()->getFaceModel().setVisibleInScene(_prevShouldDrawHead, scene);
|
||||||
|
@ -1000,19 +1001,27 @@ void MyAvatar::setFaceModelURL(const QUrl& faceModelURL) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyAvatar::setSkeletonModelURL(const QUrl& skeletonModelURL) {
|
void MyAvatar::setSkeletonModelURL(const QUrl& skeletonModelURL) {
|
||||||
|
|
||||||
Avatar::setSkeletonModelURL(skeletonModelURL);
|
Avatar::setSkeletonModelURL(skeletonModelURL);
|
||||||
render::ScenePointer scene = Application::getInstance()->getMain3DScene();
|
render::ScenePointer scene = Application::getInstance()->getMain3DScene();
|
||||||
_skeletonModel.setVisibleInScene(_prevShouldDrawHead, scene);
|
|
||||||
_billboardValid = false;
|
_billboardValid = false;
|
||||||
|
|
||||||
if (_useFullAvatar) {
|
if (_useFullAvatar) {
|
||||||
|
_skeletonModel.setVisibleInScene(_prevShouldDrawHead, scene);
|
||||||
|
|
||||||
const QUrl DEFAULT_SKELETON_MODEL_URL = QUrl::fromLocalFile(PathUtils::resourcesPath() + "meshes/defaultAvatar_body.fst");
|
const QUrl DEFAULT_SKELETON_MODEL_URL = QUrl::fromLocalFile(PathUtils::resourcesPath() + "meshes/defaultAvatar_body.fst");
|
||||||
_firstPersonSkeletonModel.setURL(_skeletonModelURL, DEFAULT_SKELETON_MODEL_URL, true, !isMyAvatar());
|
_firstPersonSkeletonModel.setURL(_skeletonModelURL, DEFAULT_SKELETON_MODEL_URL, true, !isMyAvatar());
|
||||||
_firstPersonSkeletonModel.setVisibleInScene(!_prevShouldDrawHead, scene);
|
_firstPersonSkeletonModel.setVisibleInScene(!_prevShouldDrawHead, scene);
|
||||||
|
} else {
|
||||||
|
_skeletonModel.setVisibleInScene(true, scene);
|
||||||
|
|
||||||
|
_firstPersonSkeletonModel.setVisibleInScene(false, scene);
|
||||||
|
_firstPersonSkeletonModel.reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyAvatar::useFullAvatarURL(const QUrl& fullAvatarURL, const QString& modelName) {
|
void MyAvatar::useFullAvatarURL(const QUrl& fullAvatarURL, const QString& modelName) {
|
||||||
|
|
||||||
if (QThread::currentThread() != thread()) {
|
if (QThread::currentThread() != thread()) {
|
||||||
QMetaObject::invokeMethod(this, "useFullAvatarURL", Qt::BlockingQueuedConnection,
|
QMetaObject::invokeMethod(this, "useFullAvatarURL", Qt::BlockingQueuedConnection,
|
||||||
Q_ARG(const QUrl&, fullAvatarURL),
|
Q_ARG(const QUrl&, fullAvatarURL),
|
||||||
|
|
Loading…
Reference in a new issue