16 #ifndef QGSTERRAINENTITY_P_H
17 #define QGSTERRAINENTITY_P_H
47 namespace QgsRayCastingUtils
53 class QgsTerrainTextureGenerator;
57 class TerrainMapUpdateJobFactory;
65 class QgsTerrainEntity :
public QgsChunkedEntity
70 explicit QgsTerrainEntity(
const Qgs3DMapSettings &map, Qt3DCore::QNode *parent =
nullptr );
72 ~QgsTerrainEntity()
override;
77 QgsTerrainTextureGenerator *textureGenerator() {
return mTextureGenerator; }
82 Qt3DRender::QObjectPicker *terrainPicker()
const {
return mTerrainPicker; }
84 Qt3DCore::QTransform *transform()
const {
return mTerrainTransform; }
86 float terrainElevationOffset()
const;
89 bool rayIntersection(
const QgsRayCastingUtils::Ray3D &ray, QVector3D &intersectionPoint );
92 void onShowBoundingBoxesChanged();
93 void invalidateMapImages();
94 void onLayersChanged();
95 void onTerrainElevationOffsetChanged(
float newOffset );
99 void connectToLayersRepaintRequest();
103 Qt3DRender::QObjectPicker *mTerrainPicker =
nullptr;
104 QgsTerrainTextureGenerator *mTextureGenerator =
nullptr;
106 Qt3DCore::QTransform *mTerrainTransform =
nullptr;
108 std::unique_ptr<TerrainMapUpdateJobFactory> mUpdateJobFactory;
111 QList<QgsMapLayer *> mLayers;
117 class TerrainMapUpdateJob :
public QgsChunkQueueJob
121 TerrainMapUpdateJob( QgsTerrainTextureGenerator *textureGenerator, QgsChunkNode *mNode );
123 void cancel()
override;
126 void onTileReady(
int jobId,
const QImage &image );
129 QgsTerrainTextureGenerator *mTextureGenerator =
nullptr;
135 #endif // QGSTERRAINENTITY_P_H