Qt 6.x
The Qt SDK
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
QQuick3DSceneManager Class Reference

#include <qquick3dscenemanager_p.h>

+ Inheritance diagram for QQuick3DSceneManager:
+ Collaboration diagram for QQuick3DSceneManager:

Public Types

enum class  NodePriority {
  Skeleton , Other , ModelWithInstanceRoot , Lights ,
  Count
}
 
enum class  ResourcePriority { TextureData , Texture , Other , Count }
 
enum class  ExtensionPriority { RenderExtension , Count }
 

Signals

void needsUpdate ()
 
void windowChanged ()
 
- Signals inherited from QObject
void destroyed (QObject *=nullptr)
 This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked.
 
void objectNameChanged (const QString &objectName, QPrivateSignal)
 This signal is emitted after the object's name has been changed.
 

Public Member Functions

 QQuick3DSceneManager (QObject *parent=nullptr)
 
 ~QQuick3DSceneManager () override
 
void setWindow (QQuickWindow *window)
 
QQuickWindowwindow ()
 
void dirtyItem (QQuick3DObject *item)
 
void requestUpdate ()
 
void cleanup (QSSGRenderGraphObject *item)
 
void polishItems ()
 
void forcePolish ()
 
void sync ()
 
void preSync ()
 
bool cleanupNodes ()
 
bool updateDirtyResourceNodes ()
 
void updateDirtySpatialNodes ()
 
void updateDiryExtensions ()
 
void updateDirtyResource (QQuick3DObject *resourceObject)
 
void updateDirtySpatialNode (QQuick3DNode *spatialNode)
 
void updateBoundingBoxes (QSSGBufferManager &mgr)
 
QQuick3DObjectlookUpNode (const QSSGRenderGraphObject *node) const
 
- Public Member Functions inherited from QObject
Q_INVOKABLE QObject (QObject *parent=nullptr)
 Constructs an object with parent object parent.
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects.
 
virtual bool event (QEvent *event)
 This virtual function receives events to an object and should return true if the event e was recognized and processed.
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 Filters events if this object has been installed as an event filter for the watched object.
 
QString objectName () const
 
Q_WEAK_OVERLOAD void setObjectName (const QString &name)
 Sets the object's name to name.
 
void setObjectName (QAnyStringView name)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QBindable< QStringbindableObjectName ()
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false.
 
bool isWindowType () const
 Returns true if the object is a window; otherwise returns false.
 
bool isQuickItemType () const
 Returns true if the object is a QQuickItem; otherwise returns false.
 
bool signalsBlocked () const noexcept
 Returns true if signals are blocked; otherwise returns false.
 
bool blockSignals (bool b) noexcept
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it).
 
QThreadthread () const
 Returns the thread in which the object lives.
 
void moveToThread (QThread *thread)
 Changes the thread affinity for this object and its children.
 
int startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer)
 This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds.
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
 
void killTimer (int id)
 Kills the timer with timer identifier, id.
 
template<typename T >
findChild (const QString &aName=QString(), Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object.
 
template<typename T >
QList< T > findChildren (const QString &aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects.
 
template<typename T >
QList< T > findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
const QObjectListchildren () const
 Returns a list of child objects.
 
void setParent (QObject *parent)
 Makes the object a child of parent.
 
void installEventFilter (QObject *filterObj)
 Installs an event filter filterObj on this object.
 
void removeEventFilter (QObject *obj)
 Removes an event filter object obj from this object.
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const
 
bool disconnect (const QObject *receiver, const char *member=nullptr) const
 
void dumpObjectTree () const
 Dumps a tree of children to the debug output.
 
void dumpObjectInfo () const
 Dumps information about signal connections, etc.
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value.
 
bool setProperty (const char *name, QVariant &&value)
 
QVariant property (const char *name) const
 Returns the value of the object's name property.
 
QList< QByteArraydynamicPropertyNames () const
 
QBindingStoragebindingStorage ()
 
const QBindingStoragebindingStorage () const
 
QObjectparent () const
 Returns a pointer to the parent object.
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false.
 

Static Public Member Functions

static size_t resourceListIndex (QSSGRenderGraphObject::Type type)
 
static size_t nodeListIndex (QSSGRenderGraphObject::Type type)
 
static constexpr size_t extensionListIndex (QSSGRenderGraphObject::Type type)
 
static QQuick3DWindowAttachmentgetOrSetWindowAttachment (QQuickWindow &window)
 
- Static Public Member Functions inherited from QObject
static QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 \threadsafe
 
static QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 \threadsafe
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static bool disconnect (const QMetaObject::Connection &)
 Disconnect a connection.
 
template<typename Func1 , typename Func2 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
 
template<typename Func1 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero)
 

Public Attributes

QQuick3DObjectdirtyResources [size_t(ResourcePriority::Count)] {}
 
QQuick3DObjectdirtyNodes [size_t(NodePriority::Count)] {}
 
QQuick3DObjectdirtyExtensions [size_t(ExtensionPriority::Count)] {}
 
QList< QQuick3DObject * > dirtyBoundingBoxList
 
QList< QSSGRenderGraphObject * > cleanupNodeList
 
QList< QSSGRenderGraphObject * > resourceCleanupQueue
 
QSet< QQuick3DObject * > parentlessItems
 
QVector< QSGDynamicTexture * > qsgDynamicTextures
 
QHash< const QSSGRenderGraphObject *, QQuick3DObject * > m_nodeMap
 
QSet< QSSGRenderGraphObject * > resourceLoaders
 
QQuickWindowm_window = nullptr
 
QPointer< QQuick3DWindowAttachmentwattached
 
int inputHandlingEnabled = 0
 
bool sharedResourceRemoved = false
 
friend QQuick3DObject
 

Additional Inherited Members

- Public Slots inherited from QObject
void deleteLater ()
 \threadsafe
 
- Protected Member Functions inherited from QObject
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr.
 
int senderSignalIndex () const
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal.
 
bool isSignalConnected (const QMetaMethod &signal) const
 
virtual void timerEvent (QTimerEvent *event)
 This event handler can be reimplemented in a subclass to receive timer events for the object.
 
virtual void childEvent (QChildEvent *event)
 This event handler can be reimplemented in a subclass to receive child events.
 
virtual void customEvent (QEvent *event)
 This event handler can be reimplemented in a subclass to receive custom events.
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
 QObject (QObjectPrivate &dd, QObject *parent=nullptr)
 
- Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Properties inherited from QObject
QString objectName
 the name of this object
 

Detailed Description

Definition at line 72 of file qquick3dscenemanager_p.h.

Member Enumeration Documentation

◆ ExtensionPriority

Enumerator
RenderExtension 
Count 

Definition at line 109 of file qquick3dscenemanager_p.h.

◆ NodePriority

Enumerator
Skeleton 
Other 
ModelWithInstanceRoot 
Lights 
Count 

Definition at line 107 of file qquick3dscenemanager_p.h.

◆ ResourcePriority

Enumerator
TextureData 
Texture 
Other 
Count 

Definition at line 108 of file qquick3dscenemanager_p.h.

Constructor & Destructor Documentation

◆ QQuick3DSceneManager()

QQuick3DSceneManager::QQuick3DSceneManager ( QObject parent = nullptr)
explicit

Definition at line 21 of file qquick3dscenemanager.cpp.

◆ ~QQuick3DSceneManager()

QQuick3DSceneManager::~QQuick3DSceneManager ( )
override

Definition at line 28 of file qquick3dscenemanager.cpp.

References cleanupNodes(), QQuick3DWindowAttachment::unregisterSceneManager(), and wattached.

+ Here is the call graph for this function:

Member Function Documentation

◆ cleanup()

void QQuick3DSceneManager::cleanup ( QSSGRenderGraphObject item)

Definition at line 73 of file qquick3dscenemanager.cpp.

References QList< T >::append(), cleanupNodeList, QListSpecialMethodsBase< T >::contains(), QQuick3DObjectPrivate::get(), item, m_nodeMap, Q_ASSERT, and sharedResourceRemoved.

Referenced by QQuick3DObjectPrivate::derefSceneManager().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cleanupNodes()

bool QQuick3DSceneManager::cleanupNodes ( )

Definition at line 262 of file qquick3dscenemanager.cpp.

References cleanupNodeList, QList< T >::clear(), QSSGRenderGraphObject::hasGraphicsResources(), inputHandlingEnabled, QSSGRenderGraphObject::isNodeType(), m_nodeMap, QQuick3DWindowAttachment::queueForCleanup(), QHash< Key, T >::remove(), QSet< T >::remove(), QSSGRenderNode::removeFromGraph(), resourceLoaders, ret, sharedResourceRemoved, and wattached.

Referenced by ~QQuick3DSceneManager().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dirtyItem()

void QQuick3DSceneManager::dirtyItem ( QQuick3DObject item)

Definition at line 62 of file qquick3dscenemanager.cpp.

References emit, item, needsUpdate(), and Q_UNUSED.

Referenced by QQuick3DObjectPrivate::addToDirtyList().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ extensionListIndex()

static constexpr size_t QQuick3DSceneManager::extensionListIndex ( QSSGRenderGraphObject::Type  type)
inlinestaticconstexpr

Definition at line 137 of file qquick3dscenemanager_p.h.

References QSSGRenderGraphObject::isExtension(), and Q_ASSERT.

Referenced by QQuick3DObjectPrivate::addToDirtyList().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ forcePolish()

void QQuick3DSceneManager::forcePolish ( )

Definition at line 94 of file qquick3dscenemanager.cpp.

◆ getOrSetWindowAttachment()

QQuick3DWindowAttachment * QQuick3DSceneManager::getOrSetWindowAttachment ( QQuickWindow window)
static

Definition at line 244 of file qquick3dscenemanager.cpp.

References QVariant::fromValue(), QObject::property(), qtQQ3DWAPropName, QObject::setProperty(), and window().

Referenced by QQuick3DViewport::createRenderer(), setWindow(), and QQuick3DSceneRenderer::synchronize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ lookUpNode()

QQuick3DObject * QQuick3DSceneManager::lookUpNode ( const QSSGRenderGraphObject node) const

Definition at line 239 of file qquick3dscenemanager.cpp.

References m_nodeMap.

◆ needsUpdate

void QQuick3DSceneManager::needsUpdate ( )
signal

Referenced by QQuick3DViewport::QQuick3DViewport(), dirtyItem(), requestUpdate(), and QQuick3DViewport::setImportScene().

+ Here is the caller graph for this function:

◆ nodeListIndex()

static size_t QQuick3DSceneManager::nodeListIndex ( QSSGRenderGraphObject::Type  type)
inlinestatic

Definition at line 124 of file qquick3dscenemanager_p.h.

References QSSGRenderGraphObject::isLight(), QSSGRenderGraphObject::isNodeType(), and Q_ASSERT.

Referenced by QQuick3DObjectPrivate::addToDirtyList().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ polishItems()

void QQuick3DSceneManager::polishItems ( )

Definition at line 89 of file qquick3dscenemanager.cpp.

◆ preSync()

void QQuick3DSceneManager::preSync ( )

Definition at line 381 of file qquick3dscenemanager.cpp.

References dirtyExtensions, dirtyNodes, dirtyResources, QQuick3DObjectPrivate::get(), it, next, and QQuick3DObjectPrivate::nextDirtyItem.

+ Here is the call graph for this function:

◆ requestUpdate()

void QQuick3DSceneManager::requestUpdate ( )

Definition at line 68 of file qquick3dscenemanager.cpp.

References emit, and needsUpdate().

+ Here is the call graph for this function:

◆ resourceListIndex()

static size_t QQuick3DSceneManager::resourceListIndex ( QSSGRenderGraphObject::Type  type)
inlinestatic

Definition at line 111 of file qquick3dscenemanager_p.h.

References QSSGRenderGraphObject::isNodeType(), QSSGRenderGraphObject::isTexture(), and Q_ASSERT.

Referenced by QQuick3DObjectPrivate::addToDirtyList().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setWindow()

void QQuick3DSceneManager::setWindow ( QQuickWindow window)

Definition at line 35 of file qquick3dscenemanager.cpp.

References emit, getOrSetWindowAttachment(), m_window, QQuick3DWindowAttachment::registerSceneManager(), QQuick3DWindowAttachment::unregisterSceneManager(), wattached, window(), and windowChanged().

Referenced by QQuick3DViewport::itemChange().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sync()

void QQuick3DSceneManager::sync ( )

Definition at line 99 of file qquick3dscenemanager.cpp.

◆ updateBoundingBoxes()

void QQuick3DSceneManager::updateBoundingBoxes ( QSSGBufferManager mgr)

Definition at line 104 of file qquick3dscenemanager.cpp.

References dirtyBoundingBoxList, QQuick3DObjectPrivate::get(), QSSGBufferManager::getModelBounds(), QSSGBounds3::maximum, QSSGBounds3::minimum, model, QList< T >::removeOne(), QQuick3DObjectPrivate::sceneManager, and QQuick3DObjectPrivate::spatialNode.

+ Here is the call graph for this function:

◆ updateDirtyResource()

void QQuick3DSceneManager::updateDirtyResource ( QQuick3DObject resourceObject)

Definition at line 147 of file qquick3dscenemanager.cpp.

References QQuick3DObjectPrivate::dirtyAttributes, QQuick3DObjectPrivate::get(), inputHandlingEnabled, QHash< Key, T >::insert(), QSet< T >::insert(), m_nodeMap, Q_UNUSED, resourceLoaders, QQuick3DObjectPrivate::spatialNode, QSSGRenderGraphObject::type, and QQuick3DObject::updateSpatialNode().

+ Here is the call graph for this function:

◆ updateDirtyResourceNodes()

bool QQuick3DSceneManager::updateDirtyResourceNodes ( )

Definition at line 120 of file qquick3dscenemanager.cpp.

References dirtyResources, it, and ret.

◆ updateDirtySpatialNode()

void QQuick3DSceneManager::updateDirtySpatialNode ( QQuick3DNode spatialNode)

◆ updateDirtySpatialNodes()

void QQuick3DSceneManager::updateDirtySpatialNodes ( )

Definition at line 131 of file qquick3dscenemanager.cpp.

References dirtyNodes, and it.

◆ updateDiryExtensions()

void QQuick3DSceneManager::updateDiryExtensions ( )

Definition at line 139 of file qquick3dscenemanager.cpp.

References dirtyExtensions, and it.

◆ window()

QQuickWindow * QQuick3DSceneManager::window ( )

Definition at line 57 of file qquick3dscenemanager.cpp.

References m_window.

Referenced by getOrSetWindowAttachment(), QQuick3DObjectPrivate::refSceneManager(), setWindow(), QQuick3DSceneRenderer::synchronize(), and QQuick3DTexture::updateSpatialNode().

+ Here is the caller graph for this function:

◆ windowChanged

void QQuick3DSceneManager::windowChanged ( )
signal

Referenced by QQuick3DTexture::itemChange(), and setWindow().

+ Here is the caller graph for this function:

Member Data Documentation

◆ cleanupNodeList

QList<QSSGRenderGraphObject *> QQuick3DSceneManager::cleanupNodeList

Definition at line 151 of file qquick3dscenemanager_p.h.

Referenced by cleanup(), and cleanupNodes().

◆ dirtyBoundingBoxList

QList<QQuick3DObject *> QQuick3DSceneManager::dirtyBoundingBoxList

◆ dirtyExtensions

QQuick3DObject* QQuick3DSceneManager::dirtyExtensions[size_t(ExtensionPriority::Count)] {}

◆ dirtyNodes

QQuick3DObject* QQuick3DSceneManager::dirtyNodes[size_t(NodePriority::Count)] {}

◆ dirtyResources

QQuick3DObject* QQuick3DSceneManager::dirtyResources[size_t(ResourcePriority::Count)] {}

◆ inputHandlingEnabled

int QQuick3DSceneManager::inputHandlingEnabled = 0

◆ m_nodeMap

QHash<const QSSGRenderGraphObject *, QQuick3DObject *> QQuick3DSceneManager::m_nodeMap

◆ m_window

QQuickWindow* QQuick3DSceneManager::m_window = nullptr

Definition at line 158 of file qquick3dscenemanager_p.h.

Referenced by setWindow(), and window().

◆ parentlessItems

QSet<QQuick3DObject *> QQuick3DSceneManager::parentlessItems

◆ QQuick3DObject

friend QQuick3DSceneManager::QQuick3DObject

Definition at line 162 of file qquick3dscenemanager_p.h.

◆ qsgDynamicTextures

QVector<QSGDynamicTexture *> QQuick3DSceneManager::qsgDynamicTextures

◆ resourceCleanupQueue

QList<QSSGRenderGraphObject *> QQuick3DSceneManager::resourceCleanupQueue

Definition at line 152 of file qquick3dscenemanager_p.h.

◆ resourceLoaders

QSet<QSSGRenderGraphObject *> QQuick3DSceneManager::resourceLoaders

Definition at line 157 of file qquick3dscenemanager_p.h.

Referenced by cleanupNodes(), and updateDirtyResource().

◆ sharedResourceRemoved

bool QQuick3DSceneManager::sharedResourceRemoved = false

Definition at line 161 of file qquick3dscenemanager_p.h.

Referenced by cleanup(), and cleanupNodes().

◆ wattached


The documentation for this class was generated from the following files: