18 #include <Qt3DRender/QGeometryRenderer> 
   31 FlatTerrainChunkLoader::FlatTerrainChunkLoader( QgsTerrainEntity *terrain, QgsChunkNode *node )
 
   32   : QgsTerrainTileLoader( terrain, node )
 
   38 Qt3DCore::QEntity *FlatTerrainChunkLoader::createEntity( Qt3DCore::QEntity *parent )
 
   40   QgsTerrainTileEntity *entity = 
new QgsTerrainTileEntity( mNode->tileId() );
 
   47   mTileGeometry = 
new Qt3DExtras::QPlaneGeometry;
 
   49   Qt3DRender::QGeometryRenderer *mesh = 
new Qt3DRender::QGeometryRenderer;
 
   50   mesh->setGeometry( mTileGeometry ); 
 
   51   entity->addComponent( mesh ); 
 
   60   Qt3DCore::QTransform *transform = 
nullptr;
 
   61   transform = 
new Qt3DCore::QTransform();
 
   62   entity->addComponent( transform );
 
   67   double half = side / 2;
 
   69   transform->setScale( side );
 
   70   transform->setTranslation( QVector3D( bbox.
xMin + half, 0, bbox.
zMin + half ) );
 
   72   entity->setEnabled( 
false );
 
   73   entity->setParent( parent );
 
   83   return new FlatTerrainChunkLoader( 
mTerrain, node );
 
   90   cloned->mExtent = mExtent;
 
   91   cloned->updateTilingScheme();
 
  114   QDomElement elemExtent = elem.ownerDocument().createElement( QStringLiteral( 
"extent" ) );
 
  115   elemExtent.setAttribute( QStringLiteral( 
"xmin" ), QString::number( r.
xMinimum() ) );
 
  116   elemExtent.setAttribute( QStringLiteral( 
"xmax" ), QString::number( r.
xMaximum() ) );
 
  117   elemExtent.setAttribute( QStringLiteral( 
"ymin" ), QString::number( r.
yMinimum() ) );
 
  118   elemExtent.setAttribute( QStringLiteral( 
"ymax" ), QString::number( r.
yMaximum() ) );
 
  119   elem.appendChild( elemExtent );
 
  126   QDomElement elemExtent = elem.firstChildElement( QStringLiteral( 
"extent" ) );
 
  127   double xmin = elemExtent.attribute( QStringLiteral( 
"xmin" ) ).toDouble();
 
  128   double xmax = elemExtent.attribute( QStringLiteral( 
"xmax" ) ).toDouble();
 
  129   double ymin = elemExtent.attribute( QStringLiteral( 
"ymin" ) ).toDouble();
 
  130   double ymax = elemExtent.attribute( QStringLiteral( 
"ymax" ) ).toDouble();
 
  140   updateTilingScheme();
 
  149   updateTilingScheme();
 
  154 void QgsFlatTerrainGenerator::updateTilingScheme()
 
bool isTerrainShadingEnabled() const
Returns whether terrain shading is enabled.
QgsPhongMaterialSettings terrainShadingMaterial() const
Returns terrain shading material.
QList< QgsMapLayer * > terrainLayers() const
Returns the list of map layers to be rendered as a texture of the terrain.
This class represents a coordinate reference system (CRS).
QgsChunkLoader * createChunkLoader(QgsChunkNode *node) const override SIP_FACTORY
Type type() const override
What texture generator implementation is this.
void setCrs(const QgsCoordinateReferenceSystem &crs)
Sets CRS of the terrain.
QgsRectangle extent() const override
extent of the terrain in terrain's CRS
void rootChunkHeightRange(float &hMin, float &hMax) const override
Returns height range of the root chunk in world coordinates.
QgsCoordinateReferenceSystem crs() const
Returns CRS of the terrain.
void writeXml(QDomElement &elem) const override
Write terrain generator's configuration to XML.
QgsTerrainGenerator * clone() const override SIP_FACTORY
Makes a copy of the current instance.
QgsFlatTerrainGenerator()=default
Creates flat terrain generator object.
void readXml(const QDomElement &elem) override
Read terrain generator's configuration from XML.
void setExtent(const QgsRectangle &extent) override
sets the extent of the terrain in terrain's CRS
A rectangle specified with double values.
double yMaximum() const SIP_HOLDGIL
Returns the y maximum value (top side of rectangle).
double xMaximum() const SIP_HOLDGIL
Returns the x maximum value (right side of rectangle).
double xMinimum() const SIP_HOLDGIL
Returns the x minimum value (left side of rectangle).
double yMinimum() const SIP_HOLDGIL
Returns the y minimum value (bottom side of rectangle).
bool isNull() const
Test if the rectangle is null (all coordinates zero or after call to setMinimal()).
Type
Enumeration of the available terrain generators.
@ Flat
The whole terrain is flat area.
QgsTilingScheme mTerrainTilingScheme
Tiling scheme of the terrain.
void extentChanged()
Emitted when the terrain extent has changed.
QgsTerrainEntity * mTerrain
QgsRectangle tileToExtent(int x, int y, int z) const
Returns map coordinates of the extent of a tile.
const QgsCoordinateReferenceSystem & crs