@@ -96,7 +96,7 @@ Qt3DRender::QGeometry *QgsLineVertexData::createGeometry( Qt3DCore::QNode *paren
96
96
return geom;
97
97
}
98
98
99
- void QgsLineVertexData::addLineString ( const QgsLineString &lineString )
99
+ void QgsLineVertexData::addLineString ( const QgsLineString &lineString, float extraHeightOffset )
100
100
{
101
101
if ( withAdjacency )
102
102
indexes << vertices.count (); // add the following vertex (for adjacency)
@@ -108,7 +108,7 @@ void QgsLineVertexData::addLineString( const QgsLineString &lineString )
108
108
for ( int i = 0 ; i < lineString.vertexCount (); ++i )
109
109
{
110
110
QgsPoint p = lineString.pointN ( i );
111
- float z = Qgs3DUtils::clampAltitude ( p, altClamping, altBinding, baseHeight, centroid, *mapSettings );
111
+ float z = Qgs3DUtils::clampAltitude ( p, altClamping, altBinding, baseHeight + extraHeightOffset , centroid, *mapSettings );
112
112
113
113
vertices << QVector3D ( p.x () - mapSettings->origin ().x (), z, -( p.y () - mapSettings->origin ().y () ) );
114
114
indexes << vertices.count () - 1 ;
@@ -120,4 +120,33 @@ void QgsLineVertexData::addLineString( const QgsLineString &lineString )
120
120
indexes << 0 ; // add primitive restart
121
121
}
122
122
123
+
124
+ void QgsLineVertexData::addVerticalLines ( const QgsLineString &lineString, float verticalLength )
125
+ {
126
+ QgsPoint centroid;
127
+ if ( altBinding == Qgs3DTypes::AltBindCentroid )
128
+ centroid = lineString.centroid ();
129
+
130
+ for ( int i = 0 ; i < lineString.vertexCount (); ++i )
131
+ {
132
+ QgsPoint p = lineString.pointN ( i );
133
+ float z = Qgs3DUtils::clampAltitude ( p, altClamping, altBinding, baseHeight, centroid, *mapSettings );
134
+ float z2 = z + verticalLength;
135
+
136
+ if ( withAdjacency )
137
+ indexes << vertices.count (); // add the following vertex (for adjacency)
138
+
139
+ vertices << QVector3D ( p.x () - mapSettings->origin ().x (), z, -( p.y () - mapSettings->origin ().y () ) );
140
+ indexes << vertices.count () - 1 ;
141
+ vertices << QVector3D ( p.x () - mapSettings->origin ().x (), z2, -( p.y () - mapSettings->origin ().y () ) );
142
+ indexes << vertices.count () - 1 ;
143
+
144
+ if ( withAdjacency )
145
+ indexes << vertices.count () - 1 ; // add the last vertex (for adjacency)
146
+
147
+ indexes << 0 ; // add primitive restart
148
+ }
149
+ }
150
+
151
+
123
152
// / @endcond
0 commit comments