diff options
Diffstat (limited to 'src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp')
-rw-r--r-- | src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp b/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp index 1626554ea..b99f6ae75 100644 --- a/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp +++ b/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp @@ -98,7 +98,8 @@ Quick3DNodeInstantiatorPrivate::Quick3DNodeInstantiatorPrivate() Quick3DNodeInstantiatorPrivate::~Quick3DNodeInstantiatorPrivate() { - qDeleteAll(m_objects); + if (m_ownModel) + delete m_instanceModel; } void Quick3DNodeInstantiatorPrivate::clear() @@ -244,6 +245,7 @@ void Quick3DNodeInstantiatorPrivate::makeModel() Quick3DNodeInstantiator::Quick3DNodeInstantiator(QNode *parent) : QNode(*new Quick3DNodeInstantiatorPrivate, parent) { + connect(this, &QNode::parentChanged, this, &Quick3DNodeInstantiator::onParentChanged); } /*! @@ -500,6 +502,17 @@ void Quick3DNodeInstantiator::componentComplete() } } +/*! + \internal +*/ +void Quick3DNodeInstantiator::onParentChanged(QObject *parent) +{ + Q_D(const Quick3DNodeInstantiator); + auto parentNode = static_cast<QNode *>(parent); + for (auto obj : d->m_objects) + static_cast<QNode *>(obj.data())->setParent(parentNode); +} + // TODO: Avoid cloning here //void Quick3DNodeInstantiator::copy(const QNode *ref) //{ |