16#ifndef QGSCHUNKLOADER_H
17#define QGSCHUNKLOADER_H
43class QgsChunkLoader :
public QgsChunkQueueJob
48 QgsChunkLoader( QgsChunkNode *node )
49 : QgsChunkQueueJob( node )
56 virtual Qt3DCore::QEntity *createEntity( Qt3DCore::QEntity *parent ) = 0;
64class QgsChunkLoaderFactory :
public QObject
68 ~QgsChunkLoaderFactory()
override =
default;
71 virtual QgsChunkLoader *createChunkLoader( QgsChunkNode *node )
const = 0;
74 virtual int primitivesCount( QgsChunkNode *node )
const
81 virtual QgsChunkNode *createRootNode()
const = 0;
83 virtual QVector<QgsChunkNode *> createChildren( QgsChunkNode *node )
const = 0;
96 virtual bool canCreateChildren( QgsChunkNode *node )
112 virtual void prepareChildren( QgsChunkNode *node ) { Q_UNUSED( node ); }
116 void childrenPrepared( QgsChunkNode *node );
127class _3D_EXPORT QgsQuadtreeChunkLoaderFactory :
public QgsChunkLoaderFactory
131 QgsQuadtreeChunkLoaderFactory();
132 ~QgsQuadtreeChunkLoaderFactory()
override;
135 void setupQuadtree(
const QgsBox3D &rootBox3D,
float rootError,
int maxLevel = -1,
const QgsBox3D &clippingBox3D = QgsBox3D() );
137 QgsChunkNode *createRootNode()
const override;
138 QVector<QgsChunkNode *> createChildren( QgsChunkNode *node )
const override;
142 QgsBox3D mClippingBox3D;
143 float mRootError = 0;
156class QgsChunkUpdaterFactory :
public QgsChunkQueueJobFactory
159 QgsChunkUpdaterFactory( QgsChunkLoaderFactory *loaderFactory )
160 : mChunkLoaderFactory( loaderFactory )
163 QgsChunkQueueJob *createJob( QgsChunkNode *chunk )
override {
return mChunkLoaderFactory->createChunkLoader( chunk ); }
166 QgsChunkLoaderFactory *mChunkLoaderFactory;