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,
const QgsTiledSceneIndex &index, QgsCoordinateReferenceSystem tileCrs, QgsCoordinateReferenceSystem layerCrs,
double zValueScale,
double zValueOffset
90 QgsChunkLoader *createChunkLoader( QgsChunkNode *node )
const override;
91 QgsChunkNode *createRootNode()
const override;
92 QVector<QgsChunkNode *> createChildren( QgsChunkNode *node )
const override;
94 bool canCreateChildren( QgsChunkNode *node )
override;
95 void prepareChildren( QgsChunkNode *node )
override;
97 QgsChunkNode *nodeForTile(
const QgsTiledSceneTile &t,
const QgsChunkNodeId &nodeId, QgsChunkNode *parent )
const;
98 void fetchHierarchyForNode(
long long nodeId, QgsChunkNode *origNode );
100 Qgs3DRenderContext mRenderContext;
101 QString mRelativePathBase;
102 mutable QgsTiledSceneIndex mIndex;
103 double mZValueScale = 1.0;
104 double mZValueOffset = 0;
105 QgsCoordinateTransform mBoundsTransform;
106 QgsCoordinateReferenceSystem mLayerCrs;
107 QSet<long long> mPendingHierarchyFetches;
108 QSet<long long> mFutureHierarchyFetches;
122class QgsTiledSceneLayerChunkedEntity :
public QgsChunkedEntity
126 explicit QgsTiledSceneLayerChunkedEntity(
127 Qgs3DMapSettings *map,
128 const QgsTiledSceneIndex &index,
129 QgsCoordinateReferenceSystem tileCrs,
130 QgsCoordinateReferenceSystem layerCrs,
131 double maximumScreenError,
132 bool showBoundingBoxes,
137 ~QgsTiledSceneLayerChunkedEntity()
override;
139 QList<QgsRayCastHit> rayIntersection(
const QgsRay3D &ray,
const QgsRayCastContext &context )
const override;
141 int pendingJobsCount()
const override;
144 mutable QgsTiledSceneIndex mIndex;