Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Automatically setup 3d point cloud renderer to match 2d renderer after
a laz point cloud index task finishes, just like we do automatically
when adding an ept file directly.

Makes things more user friendly, as the expected 3d renderer is
automatically setup immediately for users
  • Loading branch information
nyalldawson committed Mar 1, 2021
1 parent e303679 commit 197accc
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
17 changes: 17 additions & 0 deletions src/app/qgisapp.cpp
Expand Up @@ -5801,6 +5801,23 @@ QgsPointCloudLayer *QgisApp::addPointCloudLayerPrivate( const QString &uri, cons
std::unique_ptr< QgsPointCloudLayer3DRenderer > renderer3D = Qgs3DAppUtils::convert2dPointCloudRendererTo3d( layer->renderer() );
if ( renderer3D )
layer->setRenderer3D( renderer3D.release() );
else
{
// maybe waiting on an index...
if ( layer->dataProvider()->indexingState() != QgsPointCloudDataProvider::Indexed )
{
QPointer< QgsPointCloudLayer > layerPointer( layer.get() );
connect( layer->dataProvider(), &QgsPointCloudDataProvider::indexGenerationStateChanged, this, [layerPointer]( QgsPointCloudDataProvider::PointCloudIndexGenerationState state )
{
if ( !layerPointer || state != QgsPointCloudDataProvider::Indexed )
return;

std::unique_ptr< QgsPointCloudLayer3DRenderer > renderer3D = Qgs3DAppUtils::convert2dPointCloudRendererTo3d( layerPointer->renderer() );
if ( renderer3D )
layerPointer->setRenderer3D( renderer3D.release() );
} );
}
}
}
#endif

Expand Down
2 changes: 1 addition & 1 deletion src/core/pointcloud/qgspointcloudlayer.cpp
Expand Up @@ -369,7 +369,7 @@ void QgsPointCloudLayer::onPointCloudIndexGenerationStateChanged( QgsPointCloudD
}
triggerRepaint();

emit renderer3DChanged();
emit rendererChanged();
}
}

Expand Down

0 comments on commit 197accc

Please sign in to comment.