mirror of https://github.com/qt/qt3d.git
Remove remaining messaging code in QSkeletonLoader
And matching unit tests Change-Id: Iff0b13b2ad9ff07d08c767f4b20de2a1685a5570 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
This commit is contained in:
parent
7f3bba6e8a
commit
4d0f8bcdea
|
|
@ -238,18 +238,6 @@ void QSkeletonLoader::setRootJoint(QJoint *rootJoint)
|
|||
/*! \internal */
|
||||
void QSkeletonLoader::sceneChangeEvent(const QSceneChangePtr &change)
|
||||
{
|
||||
Q_D(QSkeletonLoader);
|
||||
if (change->type() == Qt3DCore::PropertyUpdated) {
|
||||
auto propertyChange = qSharedPointerCast<QStaticPropertyUpdatedChangeBase>(change);
|
||||
if (propertyChange->propertyName() == QByteArrayLiteral("status")) {
|
||||
const auto e = qSharedPointerCast<Qt3DCore::QPropertyUpdatedChange>(change);
|
||||
d->setStatus(static_cast<QSkeletonLoader::Status>(e->value().toInt()));
|
||||
} else if (propertyChange->propertyName() == QByteArrayLiteral("rootJoint")) {
|
||||
auto typedChange = qSharedPointerCast<QJointChange>(propertyChange);
|
||||
auto rootJoint = std::move(typedChange->data);
|
||||
setRootJoint(rootJoint.release());
|
||||
}
|
||||
}
|
||||
QAbstractSkeleton::sceneChangeEvent(change);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -209,71 +209,6 @@ private Q_SLOTS:
|
|||
QCOMPARE(arbiter.events.size(), 0);
|
||||
}
|
||||
}
|
||||
|
||||
void checkStatusPropertyUpdate()
|
||||
{
|
||||
// GIVEN
|
||||
qRegisterMetaType<Qt3DCore::QSkeletonLoader::Status>("Status");
|
||||
TestArbiter arbiter;
|
||||
arbiter.setArbiterOnNode(this);
|
||||
QSignalSpy spy(this, SIGNAL(statusChanged(Status)));
|
||||
const QSkeletonLoader::Status newStatus = QSkeletonLoader::Error;
|
||||
|
||||
// THEN
|
||||
QVERIFY(spy.isValid());
|
||||
|
||||
// WHEN
|
||||
QPropertyUpdatedChangePtr valueChange(new QPropertyUpdatedChange(QNodeId()));
|
||||
valueChange->setPropertyName("status");
|
||||
valueChange->setValue(QVariant::fromValue(newStatus));
|
||||
sceneChangeEvent(valueChange);
|
||||
|
||||
// THEN
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QCOMPARE(arbiter.events.size(), 0);
|
||||
QCOMPARE(status(), newStatus);
|
||||
|
||||
// WHEN
|
||||
spy.clear();
|
||||
sceneChangeEvent(valueChange);
|
||||
|
||||
// THEN
|
||||
QCOMPARE(spy.count(), 0);
|
||||
QCOMPARE(arbiter.events.size(), 0);
|
||||
QCOMPARE(status(), newStatus);
|
||||
|
||||
// Cleanup
|
||||
QNodePrivate::get(this)->setArbiter(nullptr);
|
||||
}
|
||||
|
||||
void checkRootJointPropertyUpdate()
|
||||
{
|
||||
// GIVEN
|
||||
qRegisterMetaType<Qt3DCore::QJoint*>();
|
||||
TestArbiter arbiter;
|
||||
arbiter.setArbiterOnNode(this);
|
||||
QSignalSpy spy(this, SIGNAL(rootJointChanged(Qt3DCore::QJoint*)));
|
||||
std::unique_ptr<QJoint> root(new QJoint());
|
||||
|
||||
// THEN
|
||||
QVERIFY(spy.isValid());
|
||||
QVERIFY(rootJoint() == nullptr);
|
||||
|
||||
// WHEN
|
||||
auto valueChange = QJointChangePtr::create(id());
|
||||
valueChange->setDeliveryFlags(Qt3DCore::QSceneChange::Nodes);
|
||||
valueChange->setPropertyName("rootJoint");
|
||||
valueChange->data = std::move(root);
|
||||
sceneChangeEvent(valueChange);
|
||||
|
||||
// THEN
|
||||
QCOMPARE(spy.count(), 1);
|
||||
QCOMPARE(arbiter.dirtyNodes.size(), 1);
|
||||
QVERIFY(rootJoint() != nullptr);
|
||||
|
||||
// Cleanup
|
||||
QNodePrivate::get(this)->setArbiter(nullptr);
|
||||
}
|
||||
};
|
||||
|
||||
QTEST_MAIN(tst_QSkeletonLoader)
|
||||
|
|
|
|||
|
|
@ -198,70 +198,6 @@ private Q_SLOTS:
|
|||
joint->setName(name);
|
||||
QTest::newRow("inverseBind") << m << localPose << name << joint;
|
||||
}
|
||||
|
||||
void checkCreateFrontendJoints_data()
|
||||
{
|
||||
QTest::addColumn<SkeletonData>("skeletonData");
|
||||
QTest::addColumn<QJoint *>("expectedRootJoint");
|
||||
|
||||
QTest::newRow("empty") << SkeletonData() << static_cast<QJoint*>(nullptr);
|
||||
|
||||
SkeletonData skeletonData;
|
||||
JointInfo rootJointInfo;
|
||||
skeletonData.joints.push_back(rootJointInfo);
|
||||
skeletonData.jointNames.push_back(QLatin1String("rootJoint"));
|
||||
skeletonData.localPoses.push_back(Qt3DCore::Sqt());
|
||||
const int childCount = 10;
|
||||
for (int i = 0; i < childCount; ++i) {
|
||||
JointInfo childJointInfo;
|
||||
childJointInfo.parentIndex = 0;
|
||||
skeletonData.joints.push_back(childJointInfo);
|
||||
|
||||
const float x = static_cast<float>(i);
|
||||
Qt3DCore::Sqt localPose;
|
||||
localPose.translation = QVector3D(x, x, x);
|
||||
skeletonData.localPoses.push_back(localPose);
|
||||
|
||||
skeletonData.jointNames.push_back(QString("Child-%1").arg(i));
|
||||
}
|
||||
|
||||
QJoint *rootJoint = new QJoint();
|
||||
for (int i = 0; i < childCount; ++i) {
|
||||
QJoint *childJoint = new QJoint();
|
||||
const float x = static_cast<float>(i);
|
||||
childJoint->setTranslation(QVector3D(x, x, x));
|
||||
rootJoint->addChildJoint(childJoint);
|
||||
}
|
||||
|
||||
QTest::newRow("wide") << skeletonData << rootJoint;
|
||||
|
||||
skeletonData.joints.clear();
|
||||
skeletonData.joints.push_back(rootJointInfo);
|
||||
for (int i = 0; i < childCount; ++i) {
|
||||
JointInfo childJointInfo;
|
||||
childJointInfo.parentIndex = i;
|
||||
skeletonData.joints.push_back(childJointInfo);
|
||||
|
||||
const float x = static_cast<float>(i);
|
||||
Qt3DCore::Sqt localPose;
|
||||
localPose.translation = QVector3D(x, x, x);
|
||||
skeletonData.localPoses.push_back(localPose);
|
||||
|
||||
skeletonData.jointNames.push_back(QString("Child-%1").arg(i));
|
||||
}
|
||||
|
||||
rootJoint = new QJoint();
|
||||
QJoint *previousJoint = rootJoint;
|
||||
for (int i = 0; i < childCount; ++i) {
|
||||
QJoint *childJoint = new QJoint();
|
||||
const float x = static_cast<float>(i);
|
||||
childJoint->setTranslation(QVector3D(x, x, x));
|
||||
previousJoint->addChildJoint(childJoint);
|
||||
previousJoint = childJoint;
|
||||
}
|
||||
|
||||
QTest::newRow("deep") << skeletonData << rootJoint;
|
||||
}
|
||||
};
|
||||
|
||||
QTEST_APPLESS_MAIN(tst_Skeleton)
|
||||
|
|
|
|||
Loading…
Reference in New Issue