diff options
Diffstat (limited to 'src/core/transforms')
-rw-r--r-- | src/core/transforms/qtransform.cpp | 72 | ||||
-rw-r--r-- | src/core/transforms/qtransform.h | 16 | ||||
-rw-r--r-- | src/core/transforms/qtransform_p.h | 14 |
3 files changed, 5 insertions, 97 deletions
diff --git a/src/core/transforms/qtransform.cpp b/src/core/transforms/qtransform.cpp index 0ca9f61de..2e177e3b2 100644 --- a/src/core/transforms/qtransform.cpp +++ b/src/core/transforms/qtransform.cpp @@ -51,56 +51,18 @@ namespace Qt3DCore { */ QTransformPrivate::QTransformPrivate() : QComponentPrivate() - , m_transformsDirty(false) , m_rotation() , m_scale(1.0f, 1.0f, 1.0f) , m_translation() + , m_matrixDirty(false) { } -void QTransformPrivate::_q_transformDestroyed(QObject *obj) -{ - QAbstractTransform *transform = static_cast<QAbstractTransform *>(obj); - if (m_transforms.removeOne(transform)) { - emit q_func()->transformsChanged(); - _q_update(); - } -} - -void QTransformPrivate::_q_update() -{ - if (!m_transformsDirty) - m_transformsDirty = true; - emit q_func()->matrixChanged(); -} - -QMatrix4x4 QTransformPrivate::applyTransforms() const -{ - QMatrix4x4 matrix; - Q_FOREACH (const QAbstractTransform *t, m_transforms) - matrix = t->transformMatrix() * matrix; - return matrix; -} - - QTransform::QTransform(QNode *parent) : QComponent(*new QTransformPrivate, parent) { } -QTransform::QTransform(QList<QAbstractTransform *> transforms, QNode *parent) - : QComponent(*new QTransformPrivate, parent) -{ - Q_FOREACH (QAbstractTransform *t, transforms) - addTransform(t); -} - -QTransform::QTransform(QAbstractTransform *transform, QNode *parent) - : QComponent(*new QTransformPrivate, parent) -{ - addTransform(transform); -} - /*! \internal */ QTransform::QTransform(QTransformPrivate &dd, QNode *parent) : QComponent(dd, parent) @@ -110,9 +72,6 @@ QTransform::QTransform(QTransformPrivate &dd, QNode *parent) QTransform::~QTransform() { QNode::cleanup(); - Q_D(QTransform); - // boost destruction by avoiding _q_update()-s - d->m_transforms.clear(); } void QTransform::copy(const QNode *ref) @@ -127,35 +86,6 @@ void QTransform::copy(const QNode *ref) d_func()->m_translation = transform->translation(); } -QList<QAbstractTransform *> QTransform::transforms() const -{ - Q_D(const QTransform); - return d->m_transforms; -} - -void QTransform::addTransform(QAbstractTransform *transform) -{ - Q_D(QTransform); - if (transform == Q_NULLPTR || d->m_transforms.contains(transform)) - return; - d->m_transforms.append(transform); - QObject::connect(transform, SIGNAL(transformMatrixChanged()), this, SLOT(_q_update())); - QObject::connect(transform, SIGNAL(destroyed(QObject*)), this, SLOT(_q_transformDestroyed(QObject*))); - emit transformsChanged(); - d->_q_update(); -} - -void QTransform::removeTransform(QAbstractTransform *transform) -{ - Q_D(QTransform); - if (!d->m_transforms.removeOne(transform)) - return; - QObject::disconnect(transform, SIGNAL(transformMatrixChanged()), this, SLOT(_q_update())); - QObject::disconnect(transform, SIGNAL(destroyed(QObject*)), this, SLOT(_q_transformDestroyed(QObject*))); - emit transformsChanged(); - d->_q_update(); -} - void QTransform::setMatrix(const QMatrix4x4 &m) { Q_D(QTransform); diff --git a/src/core/transforms/qtransform.h b/src/core/transforms/qtransform.h index 7a08d272e..80d680b7e 100644 --- a/src/core/transforms/qtransform.h +++ b/src/core/transforms/qtransform.h @@ -47,8 +47,6 @@ QT_BEGIN_NAMESPACE namespace Qt3DCore { -class QAbstractTransform; - class QTransformPrivate; class QT3DCORESHARED_EXPORT QTransform : public QComponent { @@ -61,8 +59,6 @@ class QT3DCORESHARED_EXPORT QTransform : public QComponent public: explicit QTransform(QNode *parent = 0); - QTransform(QList<QAbstractTransform *> transforms, QNode *parent = 0); - QTransform(QAbstractTransform *transform, QNode *parent = 0); ~QTransform(); float scale() const; @@ -84,27 +80,19 @@ public: QMatrix4x4 matrix() const; - QList<QAbstractTransform *> transforms() const; - void addTransform(QAbstractTransform *xform); - void removeTransform(QAbstractTransform *xform); - - public Q_SLOTS: void setScale(float scale); void setScale3D(const QVector3D &scale); void setRotation(const QQuaternion &rotation); void setTranslation(const QVector3D &translation); - void setMatrix(const QMatrix4x4 &matrix); Q_SIGNALS: - void matrixChanged(); - void transformsChanged(); - void scaleChanged(); void scale3DChanged(); void rotationChanged(); void translationChanged(); + void matrixChanged(); protected: QTransform(QTransformPrivate &dd, QNode *parent = 0); @@ -113,8 +101,6 @@ protected: private: Q_DECLARE_PRIVATE(QTransform) QT3D_CLONEABLE(QTransform) - Q_PRIVATE_SLOT(d_func(), void _q_transformDestroyed(QObject *obj)) - Q_PRIVATE_SLOT(d_func(), void _q_update()) }; } // namespace Qt3DCore diff --git a/src/core/transforms/qtransform_p.h b/src/core/transforms/qtransform_p.h index 523842d6e..1d98d901e 100644 --- a/src/core/transforms/qtransform_p.h +++ b/src/core/transforms/qtransform_p.h @@ -54,7 +54,6 @@ QT_BEGIN_NAMESPACE namespace Qt3DCore { -class QTransform; class QTransformPrivate : public QComponentPrivate { Q_DECLARE_PUBLIC(QTransform) @@ -62,22 +61,15 @@ class QTransformPrivate : public QComponentPrivate public: QTransformPrivate(); - void _q_transformDestroyed(QObject *obj); - void _q_update(); - QMatrix4x4 applyTransforms() const; - - mutable bool m_transformsDirty; - QList<QAbstractTransform*> m_transforms; - - mutable bool m_matrixDirty; - mutable QMatrix4x4 m_matrix; - // Stored in this order as QQuaternion is bigger than QVector3D // Operations are applied in the order of: // scale, rotation, translation QQuaternion m_rotation; QVector3D m_scale; QVector3D m_translation; + + mutable QMatrix4x4 m_matrix; + mutable bool m_matrixDirty; }; } // namespace Qt3DCore |