16 #ifndef QGSCHUNKNODE_P_H 17 #define QGSCHUNKNODE_P_H 39 struct QgsChunkListEntry;
41 class QgsChunkQueueJob;
42 class QgsChunkQueueJobFactory;
49 QgsChunkNodeId(
int _x = -1,
int _y = -1,
int _z = -1 )
50 : x( _x ), y( _y ), z( _z ) {}
55 QString text()
const {
return QStringLiteral(
"%1/%2/%3" ).arg( z ).arg( x ).arg( y ); }
76 QgsChunkNode(
int tileX,
int tileY,
int tileZ,
const QgsAABB &bbox,
float error, QgsChunkNode *parent =
nullptr );
109 QgsAABB bbox()
const {
return mBbox; }
111 float error()
const {
return mError; }
113 int tileX()
const {
return mTileX; }
115 int tileY()
const {
return mTileY; }
117 int tileZ()
const {
return mTileZ; }
119 QgsChunkNodeId tileId()
const {
return QgsChunkNodeId( mTileX, mTileY, mTileZ ); }
121 QgsChunkNode *parent()
const {
return mParent; }
123 QgsChunkNode *
const *children()
const {
return mChildren; }
125 State state()
const {
return mState; }
128 QgsChunkListEntry *loaderQueueEntry()
const {
return mLoaderQueueEntry; }
130 QgsChunkListEntry *replacementQueueEntry()
const {
return mReplacementQueueEntry; }
132 QgsChunkLoader *loader()
const {
return mLoader; }
134 Qt3DCore::QEntity *entity()
const {
return mEntity; }
136 QgsChunkQueueJob *updater()
const {
return mUpdater; }
139 bool allChildChunksResident( QTime currentTime )
const;
142 void ensureAllChildrenExist();
148 QList<QgsChunkNode *> descendants();
155 void setQueuedForLoad( QgsChunkListEntry *entry );
158 void cancelQueuedForLoad();
161 void setLoading( QgsChunkLoader *chunkLoader );
164 void cancelLoading();
167 void setLoaded( Qt3DCore::QEntity *mEntity );
173 void setQueuedForUpdate( QgsChunkListEntry *entry, QgsChunkQueueJobFactory *updateJobFactory );
176 void cancelQueuedForUpdate();
182 void cancelUpdating();
188 void setExactBbox(
const QgsAABB &box );
191 void setHasData(
bool hasData ) { mHasData = hasData; }
193 bool hasData()
const {
return mHasData; }
199 int mTileX, mTileY, mTileZ;
201 QgsChunkNode *mParent;
202 QgsChunkNode *mChildren[4];
206 QgsChunkListEntry *mLoaderQueueEntry;
207 QgsChunkListEntry *mReplacementQueueEntry;
209 QgsChunkLoader *mLoader;
210 Qt3DCore::QEntity *mEntity;
212 QgsChunkQueueJobFactory *mUpdaterFactory;
213 QgsChunkQueueJob *mUpdater;
215 QTime mEntityCreatedTime;
216 bool mHasData =
true;
221 #endif // CHUNKNODE_H 3 Axis-aligned bounding box - in world coords.