16#ifndef QGSTILEDSCENECHUNKLOADER_P_H
17#define QGSTILEDSCENECHUNKLOADER_P_H
38#include <QFutureWatcher>
43class QgsTiledSceneChunkLoaderFactory;
54class QgsTiledSceneChunkLoader :
public QgsChunkLoader
58 QgsTiledSceneChunkLoader( QgsChunkNode *node,
const QgsTiledSceneIndex &index,
const QgsTiledSceneChunkLoaderFactory &factory,
double zValueScale,
double zValueOffset );
59 void start()
override;
61 ~QgsTiledSceneChunkLoader()
override;
63 Qt3DCore::QEntity *createEntity( Qt3DCore::QEntity *parent )
override;
66 const QgsTiledSceneChunkLoaderFactory &mFactory;
69 QgsTiledSceneIndex mIndex;
70 QFutureWatcher<void> *mFutureWatcher =
nullptr;
71 Qt3DCore::QEntity *mEntity =
nullptr;
82class QgsTiledSceneChunkLoaderFactory :
public QgsChunkLoaderFactory
86 QgsTiledSceneChunkLoaderFactory(
87 const Qgs3DRenderContext &context,
88 const QgsTiledSceneIndex &index,
89 QgsCoordinateReferenceSystem tileCrs,
90 QgsCoordinateReferenceSystem layerCrs,
95 QgsChunkLoader *createChunkLoader( QgsChunkNode *node )
const override;
96 QgsChunkNode *createRootNode()
const override;
97 QVector<QgsChunkNode *> createChildren( QgsChunkNode *node )
const override;
99 bool canCreateChildren( QgsChunkNode *node )
override;
100 void prepareChildren( QgsChunkNode *node )
override;
102 QgsChunkNode *nodeForTile(
const QgsTiledSceneTile &t,
const QgsChunkNodeId &nodeId, QgsChunkNode *parent )
const;
103 void fetchHierarchyForNode(
long long nodeId, QgsChunkNode *origNode );
105 Qgs3DRenderContext mRenderContext;
106 QString mRelativePathBase;
107 mutable QgsTiledSceneIndex mIndex;
108 double mZValueScale = 1.0;
109 double mZValueOffset = 0;
110 QgsCoordinateTransform mBoundsTransform;
111 QgsCoordinateReferenceSystem mLayerCrs;
112 QSet<long long> mPendingHierarchyFetches;
113 QSet<long long> mFutureHierarchyFetches;
127class QgsTiledSceneLayerChunkedEntity :
public QgsChunkedEntity
131 explicit QgsTiledSceneLayerChunkedEntity( Qgs3DMapSettings *map,
const QgsTiledSceneIndex &index, QgsCoordinateReferenceSystem tileCrs, QgsCoordinateReferenceSystem layerCrs,
double maximumScreenError,
bool showBoundingBoxes,
double zValueScale,
double zValueOffset );
133 ~QgsTiledSceneLayerChunkedEntity()
override;
135 QList<QgsRayCastHit> rayIntersection(
const QgsRay3D &ray,
const QgsRayCastContext &context )
const override;
137 int pendingJobsCount()
const override;
140 mutable QgsTiledSceneIndex mIndex;