Skip to content

Commit

Permalink
Better initialization of 3d framework, usable outside of app
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Jul 22, 2020
1 parent a34eabd commit c7b6a11
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 9 deletions.
5 changes: 5 additions & 0 deletions python/3d/auto_generated/qgs3d.sip.in
Expand Up @@ -32,6 +32,11 @@ Returns a pointer to the singleton instance.


~Qgs3D(); ~Qgs3D();


static void initialize();
%Docstring
Initializes the 3D framework.
%End

private: private:
Qgs3D( const Qgs3D &other ); Qgs3D( const Qgs3D &other );
}; };
Expand Down
21 changes: 21 additions & 0 deletions src/3d/qgs3d.cpp
Expand Up @@ -17,6 +17,15 @@


#include "qgs3d.h" #include "qgs3d.h"


#include "qgsapplication.h"
#include "qgs3drendererregistry.h"

#include "qgsabstract3drenderer.h"
#include "qgs3drendererregistry.h"
#include "qgsrulebased3drenderer.h"
#include "qgsvectorlayer3drenderer.h"
#include "qgsmeshlayer3drenderer.h"

Qgs3D *Qgs3D::instance() Qgs3D *Qgs3D::instance()
{ {
static Qgs3D *sInstance( new Qgs3D() ); static Qgs3D *sInstance( new Qgs3D() );
Expand All @@ -27,6 +36,18 @@ Qgs3D::~Qgs3D()
{ {
} }


void Qgs3D::initialize()
{
if ( instance()->mInitialized )
return;

instance()->mInitialized = true;

QgsApplication::renderer3DRegistry()->addRenderer( new QgsVectorLayer3DRendererMetadata );
QgsApplication::renderer3DRegistry()->addRenderer( new QgsRuleBased3DRendererMetadata );
QgsApplication::renderer3DRegistry()->addRenderer( new QgsMeshLayer3DRendererMetadata );
}

Qgs3D::Qgs3D() Qgs3D::Qgs3D()
{ {
} }
7 changes: 7 additions & 0 deletions src/3d/qgs3d.h
Expand Up @@ -45,6 +45,11 @@ class _3D_EXPORT Qgs3D


~Qgs3D(); ~Qgs3D();


/**
* Initializes the 3D framework.
*/
static void initialize();

private: private:


Qgs3D(); Qgs3D();
Expand All @@ -53,6 +58,8 @@ class _3D_EXPORT Qgs3D
Qgs3D( const Qgs3D &other ); Qgs3D( const Qgs3D &other );
#endif #endif


bool mInitialized = false;

}; };


#endif // QGS3D_H #endif // QGS3D_H
12 changes: 3 additions & 9 deletions src/app/qgisapp.cpp
Expand Up @@ -97,19 +97,15 @@
#include "qgsgeometrycheckregistry.h" #include "qgsgeometrycheckregistry.h"


#ifdef HAVE_3D #ifdef HAVE_3D
#include "qgsabstract3drenderer.h" #include "qgs3d.h"
#include "qgs3danimationsettings.h" #include "qgs3danimationsettings.h"
#include "qgs3danimationwidget.h" #include "qgs3danimationwidget.h"
#include "qgs3dmapcanvasdockwidget.h" #include "qgs3dmapcanvasdockwidget.h"
#include "qgs3drendererregistry.h"
#include "qgs3dmapcanvas.h" #include "qgs3dmapcanvas.h"
#include "qgs3dmapsettings.h" #include "qgs3dmapsettings.h"
#include "qgscameracontroller.h" #include "qgscameracontroller.h"
#include "qgsflatterraingenerator.h" #include "qgsflatterraingenerator.h"
#include "qgslayoutitem3dmap.h" #include "qgslayoutitem3dmap.h"
#include "qgsrulebased3drenderer.h"
#include "qgsvectorlayer3drenderer.h"
#include "qgsmeshlayer3drenderer.h"
#include "processing/qgs3dalgorithms.h" #include "processing/qgs3dalgorithms.h"
#include "qgs3dmaptoolmeasureline.h" #include "qgs3dmaptoolmeasureline.h"
#include "layout/qgslayout3dmapwidget.h" #include "layout/qgslayout3dmapwidget.h"
Expand Down Expand Up @@ -12655,10 +12651,8 @@ void QgisApp::newMapCanvas()
void QgisApp::init3D() void QgisApp::init3D()
{ {
#ifdef HAVE_3D #ifdef HAVE_3D
// register 3D renderers // initialize 3D registries
QgsApplication::instance()->renderer3DRegistry()->addRenderer( new QgsVectorLayer3DRendererMetadata ); Qgs3D::initialize();
QgsApplication::instance()->renderer3DRegistry()->addRenderer( new QgsRuleBased3DRendererMetadata );
QgsApplication::instance()->renderer3DRegistry()->addRenderer( new QgsMeshLayer3DRendererMetadata );
#else #else
mActionNew3DMapCanvas->setVisible( false ); mActionNew3DMapCanvas->setVisible( false );
#endif #endif
Expand Down

0 comments on commit c7b6a11

Please sign in to comment.