mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 02:16:51 +02:00
working on lambdas
This commit is contained in:
parent
b3a3d92131
commit
5325b22b01
2 changed files with 16 additions and 13 deletions
|
@ -1448,10 +1448,20 @@ void MyAvatar::clearJointsData() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyAvatar::setSkeletonModelURL(const QUrl& skeletonModelURL) {
|
void MyAvatar::setSkeletonModelURL(const QUrl& skeletonModelURL) {
|
||||||
if (skeletonModelURL != _skeletonModelURL) {
|
_skeletonModelChangeCount++;
|
||||||
_shouldInitHeadBones = true;
|
int skeletonModelChangeCount = _skeletonModelChangeCount;
|
||||||
}
|
std::shared_ptr<QMetaObject::Connection> skeletonConnection = std::make_shared<QMetaObject::Connection>();
|
||||||
|
*skeletonConnection = QObject::connect(_skeletonModel.get(), &SkeletonModel::skeletonLoaded, [this, skeletonModelChangeCount, skeletonConnection]() {
|
||||||
|
qDebug() << "checkingCount " << skeletonModelChangeCount << " -- " << _skeletonModelChangeCount;
|
||||||
|
if (skeletonModelChangeCount == _skeletonModelChangeCount && _skeletonModel->isLoaded()) {
|
||||||
|
qDebug() << "count is the same";
|
||||||
|
initHeadBones();
|
||||||
|
_skeletonModel->setCauterizeBoneSet(_headBoneSet);
|
||||||
|
_fstAnimGraphOverrideUrl = _skeletonModel->getGeometry()->getAnimGraphOverrideUrl();
|
||||||
|
initAnimGraph();
|
||||||
|
}
|
||||||
|
QObject::disconnect(*skeletonConnection);
|
||||||
|
});
|
||||||
Avatar::setSkeletonModelURL(skeletonModelURL);
|
Avatar::setSkeletonModelURL(skeletonModelURL);
|
||||||
_skeletonModel->setVisibleInScene(true, qApp->getMain3DScene(), render::ItemKey::TAG_BITS_NONE);
|
_skeletonModel->setVisibleInScene(true, qApp->getMain3DScene(), render::ItemKey::TAG_BITS_NONE);
|
||||||
_headBoneSet.clear();
|
_headBoneSet.clear();
|
||||||
|
@ -1878,6 +1888,7 @@ void MyAvatar::initAnimGraph() {
|
||||||
|
|
||||||
_skeletonModel->getRig().initAnimGraph(graphUrl);
|
_skeletonModel->getRig().initAnimGraph(graphUrl);
|
||||||
_currentAnimGraphUrl.set(graphUrl);
|
_currentAnimGraphUrl.set(graphUrl);
|
||||||
|
qDebug() << "init anim graph";
|
||||||
connect(&(_skeletonModel->getRig()), SIGNAL(onLoadComplete()), this, SLOT(animGraphLoaded()));
|
connect(&(_skeletonModel->getRig()), SIGNAL(onLoadComplete()), this, SLOT(animGraphLoaded()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1896,15 +1907,6 @@ void MyAvatar::animGraphLoaded() {
|
||||||
void MyAvatar::postUpdate(float deltaTime, const render::ScenePointer& scene) {
|
void MyAvatar::postUpdate(float deltaTime, const render::ScenePointer& scene) {
|
||||||
|
|
||||||
Avatar::postUpdate(deltaTime, scene);
|
Avatar::postUpdate(deltaTime, scene);
|
||||||
|
|
||||||
if (_skeletonModel->isLoaded() && !_skeletonModel->getRig().getAnimNode() && _shouldInitHeadBones) {
|
|
||||||
initHeadBones();
|
|
||||||
_skeletonModel->setCauterizeBoneSet(_headBoneSet);
|
|
||||||
_fstAnimGraphOverrideUrl = _skeletonModel->getGeometry()->getAnimGraphOverrideUrl();
|
|
||||||
initAnimGraph();
|
|
||||||
_shouldInitHeadBones = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_enableDebugDrawDefaultPose || _enableDebugDrawAnimPose) {
|
if (_enableDebugDrawDefaultPose || _enableDebugDrawAnimPose) {
|
||||||
|
|
||||||
auto animSkeleton = _skeletonModel->getRig().getAnimSkeleton();
|
auto animSkeleton = _skeletonModel->getRig().getAnimSkeleton();
|
||||||
|
|
|
@ -654,6 +654,7 @@ private:
|
||||||
bool isMyAvatar() const override { return true; }
|
bool isMyAvatar() const override { return true; }
|
||||||
virtual int parseDataFromBuffer(const QByteArray& buffer) override;
|
virtual int parseDataFromBuffer(const QByteArray& buffer) override;
|
||||||
virtual glm::vec3 getSkeletonPosition() const override;
|
virtual glm::vec3 getSkeletonPosition() const override;
|
||||||
|
int _skeletonModelChangeCount { 0 };
|
||||||
|
|
||||||
void saveAvatarScale();
|
void saveAvatarScale();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue