diff options
Diffstat (limited to 'src/render/framegraph/qsubtreeenabler.cpp')
-rw-r--r-- | src/render/framegraph/qsubtreeenabler.cpp | 78 |
1 files changed, 75 insertions, 3 deletions
diff --git a/src/render/framegraph/qsubtreeenabler.cpp b/src/render/framegraph/qsubtreeenabler.cpp index 5355b6fbd..d2c25852b 100644 --- a/src/render/framegraph/qsubtreeenabler.cpp +++ b/src/render/framegraph/qsubtreeenabler.cpp @@ -37,8 +37,8 @@ ** ****************************************************************************/ -#include <Qt3DRender/qsubtreeenabler.h> -#include <Qt3DRender/private/qframegraphnode_p.h> +#include "qsubtreeenabler_p.h" +#include <Qt3DRender/qframegraphnodecreatedchange.h> QT_BEGIN_NAMESPACE @@ -100,7 +100,7 @@ namespace Qt3DRender */ QSubtreeEnabler::QSubtreeEnabler(Qt3DCore::QNode *parent) - : QFrameGraphNode(*new QFrameGraphNodePrivate, parent) + : QFrameGraphNode(*new QSubtreeEnablerPrivate, parent) { } @@ -108,6 +108,78 @@ QSubtreeEnabler::~QSubtreeEnabler() { } +/*! + \enum QSubtreeEnabler::Enablement + + Specifies whether subtree enablement is persistent or transient. + + \value Persistent + The value of enabled is persistent. This is the default. + + \value SingleShot + The value of enabled will last for a single frame and then be reset to false. + This might be used for a subtree drawing to an FBO, for example, to only update + the FBO when the relevant portions of the scene changed. +*/ + +/*! + \qmlproperty enumeration Qt3D.Render::SubtreeEnabler::enablement + Controls whether subtree enablement is persistent or transient. + + \value Persistent + The value of enabled is persistent. This is the default. + + \value SingleShot + The value of enabled will last for a single frame and then be reset to false. + This might be used for a subtree drawing to an FBO, for example, to only update + the FBO when the relevant portions of the scene changed. +*/ + +/*! + \property Qt3DRender::QSubtreeEnabler::enablement + Controls whether subtree enablement is persistent or transient. +*/ +QSubtreeEnabler::Enablement QSubtreeEnabler::enablement() const +{ + Q_D(const QSubtreeEnabler); + return d->m_enablement; +} + +void QSubtreeEnabler::setEnablement(QSubtreeEnabler::Enablement enablement) +{ + Q_D(QSubtreeEnabler); + if (d->m_enablement == enablement) + return; + d->m_enablement = enablement; + emit enablementChanged(d->m_enablement); +} + +/*! + \qmlmethod void Qt3D.Render::SubtreeEnabler::requestUpdate() + Requests that the subtree be enabled. + + A conveninence method intended to be used with \c SingleShot enablement. + */ + +/*! + Requests that the subtree be enabled. + + A conveninence method intended to be used with \c SingleShot enablement. + */ +void QSubtreeEnabler::requestUpdate() +{ + setEnabled(true); +} + +Qt3DCore::QNodeCreatedChangeBasePtr QSubtreeEnabler::createNodeCreationChange() const +{ + auto creationChange = QFrameGraphNodeCreatedChangePtr<QSubtreeEnablerData>::create(this); + auto &data = creationChange->data; + Q_D(const QSubtreeEnabler); + data.enablement = d->m_enablement; + return creationChange; +} + } //Qt3DRender QT_END_NAMESPACE |