16#ifndef QGSRULEBASEDCHUNKLOADER_H
17#define QGSRULEBASEDCHUNKLOADER_H
35#include <QFutureWatcher>
43class QgsFeature3DHandler;
57class QgsRuleBasedChunkLoaderFactory :
public QgsQuadtreeChunkLoaderFactory
63 QgsRuleBasedChunkLoaderFactory(
const Qgs3DRenderContext &context, QgsVectorLayer *vl, QgsRuleBased3DRenderer::Rule *rootRule,
double zMin,
double zMax,
int maxFeatures );
64 ~QgsRuleBasedChunkLoaderFactory()
override;
67 QgsChunkLoader *createChunkLoader( QgsChunkNode *node )
const override;
68 bool canCreateChildren( QgsChunkNode *node )
override;
69 QVector<QgsChunkNode *> createChildren( QgsChunkNode *node )
const override;
71 Qgs3DRenderContext mRenderContext;
72 QgsVectorLayer *mLayer;
73 std::unique_ptr<QgsRuleBased3DRenderer::Rule> mRootRule;
75 mutable QHash< QString, bool > mNodesAreLeafs;
88class QgsRuleBasedChunkLoader :
public QgsChunkLoader
94 QgsRuleBasedChunkLoader(
const QgsRuleBasedChunkLoaderFactory *factory, QgsChunkNode *node );
95 ~QgsRuleBasedChunkLoader()
override;
97 void start()
override;
98 void cancel()
override;
99 Qt3DCore::QEntity *createEntity( Qt3DCore::QEntity *parent )
override;
102 const QgsRuleBasedChunkLoaderFactory *mFactory;
104 Qgs3DRenderContext mContext;
105 std::unique_ptr<QgsVectorLayerFeatureSource> mSource;
106 bool mCanceled =
false;
107 QFutureWatcher<void> *mFutureWatcher =
nullptr;
108 std::unique_ptr<QgsRuleBased3DRenderer::Rule> mRootRule;
109 bool mNodeIsLeaf =
false;
124class QgsRuleBasedChunkedEntity :
public QgsChunkedEntity
129 explicit QgsRuleBasedChunkedEntity( Qgs3DMapSettings *map, QgsVectorLayer *vl,
double zMin,
double zMax,
const QgsVectorLayer3DTilingSettings &tilingSettings, QgsRuleBased3DRenderer::Rule *rootRule );
131 QList<QgsRayCastHit> rayIntersection(
const QgsRay3D &ray,
const QgsRayCastContext &context )
const override;
133 ~QgsRuleBasedChunkedEntity()
override;
135 void onTerrainElevationOffsetChanged();
138 Qt3DCore::QTransform *mTransform =
nullptr;
140 bool applyTerrainOffset()
const;
Abstract base class for 3D symbols that are used by VectorLayer3DRenderer objects.
QHash< const QgsRuleBased3DRenderer::Rule *, QgsFeature3DHandler * > RuleToHandlerMap
Partial snapshot of vector layer's state (only the members necessary for access to features).
Represents a vector layer which manages a vector based dataset.