Skip to content

Commit

Permalink
[3d] When showing edges, data defined polygon height was not accounted
Browse files Browse the repository at this point in the history
for
  • Loading branch information
nyalldawson authored and wonder-sk committed Jun 9, 2020
1 parent 6237ba2 commit e516231
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 9 deletions.
4 changes: 2 additions & 2 deletions src/3d/symbols/qgslinevertexdata_p.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ void QgsLineVertexData::addLineString( const QgsLineString &lineString, float ex
}


void QgsLineVertexData::addVerticalLines( const QgsLineString &lineString, float verticalLength )
void QgsLineVertexData::addVerticalLines( const QgsLineString &lineString, float verticalLength, float extraHeightOffset )
{
QgsPoint centroid;
if ( altBinding == Qgs3DTypes::AltBindCentroid )
Expand All @@ -138,7 +138,7 @@ void QgsLineVertexData::addVerticalLines( const QgsLineString &lineString, float
for ( int i = 0; i < lineString.vertexCount(); ++i )
{
QgsPoint p = lineString.pointN( i );
float z = Qgs3DUtils::clampAltitude( p, altClamping, altBinding, baseHeight, centroid, *mapSettings );
float z = Qgs3DUtils::clampAltitude( p, altClamping, altBinding, baseHeight + extraHeightOffset, centroid, *mapSettings );
float z2 = z + verticalLength;

if ( withAdjacency )
Expand Down
2 changes: 1 addition & 1 deletion src/3d/symbols/qgslinevertexdata_p.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ struct QgsLineVertexData
Qt3DRender::QGeometry *createGeometry( Qt3DCore::QNode *parent );

void addLineString( const QgsLineString &lineString, float extraHeightOffset = 0 );
void addVerticalLines( const QgsLineString &lineString, float verticalLength );
void addVerticalLines( const QgsLineString &lineString, float verticalLength, float extraHeightOffset = 0 );
};

/// @endcond
Expand Down
12 changes: 6 additions & 6 deletions src/3d/symbols/qgspolygon3dsymbol_p.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,21 +93,21 @@ void QgsPolygon3DSymbolHandler::processPolygon( QgsPolygon *polyClone, QgsFeatur
if ( mSymbol.edgesEnabled() )
{
// add edges before the polygon gets the Z values modified because addLineString() does its own altitude handling
outEdges.addLineString( *static_cast<const QgsLineString *>( polyClone->exteriorRing() ) );
outEdges.addLineString( *static_cast<const QgsLineString *>( polyClone->exteriorRing() ), height );
for ( int i = 0; i < polyClone->numInteriorRings(); ++i )
outEdges.addLineString( *static_cast<const QgsLineString *>( polyClone->interiorRing( i ) ) );
outEdges.addLineString( *static_cast<const QgsLineString *>( polyClone->interiorRing( i ) ), height );

if ( extrusionHeight )
{
// add roof and wall edges
const QgsLineString *exterior = static_cast<const QgsLineString *>( polyClone->exteriorRing() );
outEdges.addLineString( *exterior, extrusionHeight );
outEdges.addVerticalLines( *exterior, extrusionHeight );
outEdges.addLineString( *exterior, extrusionHeight + height );
outEdges.addVerticalLines( *exterior, extrusionHeight, height );
for ( int i = 0; i < polyClone->numInteriorRings(); ++i )
{
const QgsLineString *interior = static_cast<const QgsLineString *>( polyClone->interiorRing( i ) );
outEdges.addLineString( *interior, extrusionHeight );
outEdges.addVerticalLines( *interior, extrusionHeight );
outEdges.addLineString( *interior, extrusionHeight + height );
outEdges.addVerticalLines( *interior, extrusionHeight, height );
}
}
}
Expand Down

0 comments on commit e516231

Please sign in to comment.