1
- #include " scene .h"
1
+ #include " qgs3dmapscene .h"
2
2
3
3
#include < Qt3DRender/QCamera>
4
4
#include < Qt3DRender/QPickingSettings>
14
14
#include " cameracontroller.h"
15
15
#include " chunknode.h"
16
16
#include " qgsvectorlayer.h"
17
- #include " map3d .h"
17
+ #include " qgs3dmapsettings .h"
18
18
#include " terrain.h"
19
19
#include " terraingenerator.h"
20
20
// #include "testchunkloader.h"
26
26
#include < Qt3DExtras/QPhongMaterial>
27
27
28
28
29
- Scene::Scene ( const Map3D &map, Qt3DExtras::QForwardRenderer *defaultFrameGraph, Qt3DRender::QRenderSettings *renderSettings, Qt3DRender::QCamera *camera, const QRect &viewportRect, Qt3DCore::QNode *parent )
29
+ Qgs3DMapScene::Qgs3DMapScene ( const Qgs3DMapSettings &map, Qt3DExtras::QForwardRenderer *defaultFrameGraph, Qt3DRender::QRenderSettings *renderSettings, Qt3DRender::QCamera *camera, const QRect &viewportRect, Qt3DCore::QNode *parent )
30
30
: Qt3DCore::QEntity( parent )
31
31
, mMap( map )
32
32
, mTerrain( nullptr )
33
33
, mForwardRenderer( defaultFrameGraph )
34
34
{
35
35
36
- connect ( &map, &Map3D ::backgroundColorChanged, this , &Scene ::onBackgroundColorChanged );
36
+ connect ( &map, &Qgs3DMapSettings ::backgroundColorChanged, this , &Qgs3DMapScene ::onBackgroundColorChanged );
37
37
onBackgroundColorChanged ();
38
38
39
39
// TODO: strange - setting OnDemand render policy still keeps QGIS busy (Qt 5.9.0)
@@ -51,7 +51,7 @@ Scene::Scene( const Map3D &map, Qt3DExtras::QForwardRenderer *defaultFrameGraph,
51
51
52
52
mFrameAction = new Qt3DLogic::QFrameAction ();
53
53
connect ( mFrameAction , &Qt3DLogic::QFrameAction::triggered,
54
- this , &Scene ::onFrameTriggered );
54
+ this , &Qgs3DMapScene ::onFrameTriggered );
55
55
addComponent ( mFrameAction ); // takes ownership
56
56
57
57
// Camera controlling
@@ -63,11 +63,11 @@ Scene::Scene( const Map3D &map, Qt3DExtras::QForwardRenderer *defaultFrameGraph,
63
63
// create terrain entity
64
64
65
65
createTerrain ();
66
- connect ( &map, &Map3D ::terrainGeneratorChanged, this , &Scene ::createTerrain );
67
- connect ( &map, &Map3D ::terrainVerticalScaleChanged, this , &Scene ::createTerrain );
68
- connect ( &map, &Map3D ::mapTileResolutionChanged, this , &Scene ::createTerrain );
69
- connect ( &map, &Map3D ::maxTerrainScreenErrorChanged, this , &Scene ::createTerrain );
70
- connect ( &map, &Map3D ::maxTerrainGroundErrorChanged, this , &Scene ::createTerrain );
66
+ connect ( &map, &Qgs3DMapSettings ::terrainGeneratorChanged, this , &Qgs3DMapScene ::createTerrain );
67
+ connect ( &map, &Qgs3DMapSettings ::terrainVerticalScaleChanged, this , &Qgs3DMapScene ::createTerrain );
68
+ connect ( &map, &Qgs3DMapSettings ::mapTileResolutionChanged, this , &Qgs3DMapScene ::createTerrain );
69
+ connect ( &map, &Qgs3DMapSettings ::maxTerrainScreenErrorChanged, this , &Qgs3DMapScene ::createTerrain );
70
+ connect ( &map, &Qgs3DMapSettings ::maxTerrainGroundErrorChanged, this , &Qgs3DMapScene ::createTerrain );
71
71
72
72
// create entities of renderers
73
73
@@ -78,7 +78,7 @@ Scene::Scene( const Map3D &map, Qt3DExtras::QForwardRenderer *defaultFrameGraph,
78
78
}
79
79
80
80
// listen to changes of layers in order to add/remove 3D renderer entities
81
- connect ( &map, &Map3D ::layersChanged, this , &Scene ::onLayersChanged );
81
+ connect ( &map, &Qgs3DMapSettings ::layersChanged, this , &Qgs3DMapScene ::onLayersChanged );
82
82
83
83
Qt3DCore::QEntity *lightEntity = new Qt3DCore::QEntity;
84
84
Qt3DCore::QTransform *lightTransform = new Qt3DCore::QTransform;
@@ -101,8 +101,8 @@ Scene::Scene( const Map3D &map, Qt3DExtras::QForwardRenderer *defaultFrameGraph,
101
101
chunkEntities << testChunkEntity;
102
102
#endif
103
103
104
- connect ( mCameraController , &CameraController::cameraChanged, this , &Scene ::onCameraChanged );
105
- connect ( mCameraController , &CameraController::viewportChanged, this , &Scene ::onCameraChanged );
104
+ connect ( mCameraController , &CameraController::cameraChanged, this , &Qgs3DMapScene ::onCameraChanged );
105
+ connect ( mCameraController , &CameraController::viewportChanged, this , &Qgs3DMapScene ::onCameraChanged );
106
106
107
107
#if 0
108
108
// experiments with loading of existing 3D models.
@@ -147,7 +147,7 @@ Scene::Scene( const Map3D &map, Qt3DExtras::QForwardRenderer *defaultFrameGraph,
147
147
onCameraChanged ();
148
148
}
149
149
150
- void Scene ::viewZoomFull ()
150
+ void Qgs3DMapScene ::viewZoomFull ()
151
151
{
152
152
QgsRectangle extent = mMap .terrainGenerator ()->extent ();
153
153
float side = qMax ( extent.width (), extent.height () );
@@ -166,7 +166,7 @@ SceneState _sceneState( CameraController *cameraController )
166
166
return state;
167
167
}
168
168
169
- void Scene ::onCameraChanged ()
169
+ void Qgs3DMapScene ::onCameraChanged ()
170
170
{
171
171
Q_FOREACH ( ChunkedEntity *entity, chunkEntities )
172
172
{
@@ -242,7 +242,7 @@ void Scene::onCameraChanged()
242
242
// qDebug() << "camera near/far" << mCameraController->camera()->nearPlane() << mCameraController->camera()->farPlane();
243
243
}
244
244
245
- void Scene ::onFrameTriggered ( float dt )
245
+ void Qgs3DMapScene ::onFrameTriggered ( float dt )
246
246
{
247
247
mCameraController ->frameTriggered ( dt );
248
248
@@ -256,7 +256,7 @@ void Scene::onFrameTriggered( float dt )
256
256
}
257
257
}
258
258
259
- void Scene ::createTerrain ()
259
+ void Qgs3DMapScene ::createTerrain ()
260
260
{
261
261
if ( mTerrain )
262
262
{
@@ -269,12 +269,12 @@ void Scene::createTerrain()
269
269
if ( !mTerrainUpdateScheduled )
270
270
{
271
271
// defer re-creation of terrain: there may be multiple invocations of this slot, so create the new entity just once
272
- QTimer::singleShot ( 0 , this , &Scene ::createTerrainDeferred );
272
+ QTimer::singleShot ( 0 , this , &Qgs3DMapScene ::createTerrainDeferred );
273
273
mTerrainUpdateScheduled = true ;
274
274
}
275
275
}
276
276
277
- void Scene ::createTerrainDeferred ()
277
+ void Qgs3DMapScene ::createTerrainDeferred ()
278
278
{
279
279
double tile0width = mMap .terrainGenerator ()->extent ().width ();
280
280
int maxZoomLevel = Utils::maxZoomLevel ( tile0width, mMap .mapTileResolution (), mMap .maxTerrainGroundError () );
@@ -305,12 +305,12 @@ void Scene::createTerrainDeferred()
305
305
mTerrainUpdateScheduled = false ;
306
306
}
307
307
308
- void Scene ::onBackgroundColorChanged ()
308
+ void Qgs3DMapScene ::onBackgroundColorChanged ()
309
309
{
310
310
mForwardRenderer ->setClearColor ( mMap .backgroundColor () );
311
311
}
312
312
313
- void Scene ::onLayerRenderer3DChanged ()
313
+ void Qgs3DMapScene ::onLayerRenderer3DChanged ()
314
314
{
315
315
QgsMapLayer *layer = qobject_cast<QgsMapLayer *>( sender () );
316
316
Q_ASSERT ( layer );
@@ -322,7 +322,7 @@ void Scene::onLayerRenderer3DChanged()
322
322
addLayerEntity ( layer );
323
323
}
324
324
325
- void Scene ::onLayersChanged ()
325
+ void Qgs3DMapScene ::onLayersChanged ()
326
326
{
327
327
QSet<QgsMapLayer *> layersBefore = QSet<QgsMapLayer *>::fromList ( mLayerEntities .keys () );
328
328
QList<QgsMapLayer *> layersAdded;
@@ -350,7 +350,7 @@ void Scene::onLayersChanged()
350
350
}
351
351
}
352
352
353
- void Scene ::addLayerEntity ( QgsMapLayer *layer )
353
+ void Qgs3DMapScene ::addLayerEntity ( QgsMapLayer *layer )
354
354
{
355
355
QgsAbstract3DRenderer *renderer = layer->renderer3D ();
356
356
if ( renderer )
@@ -360,26 +360,26 @@ void Scene::addLayerEntity( QgsMapLayer *layer )
360
360
mLayerEntities .insert ( layer, newEntity );
361
361
}
362
362
363
- connect ( layer, &QgsMapLayer::renderer3DChanged, this , &Scene ::onLayerRenderer3DChanged );
363
+ connect ( layer, &QgsMapLayer::renderer3DChanged, this , &Qgs3DMapScene ::onLayerRenderer3DChanged );
364
364
365
365
if ( layer->type () == QgsMapLayer::VectorLayer )
366
366
{
367
367
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( layer );
368
- connect ( vlayer, &QgsVectorLayer::selectionChanged, this , &Scene ::onLayerRenderer3DChanged );
368
+ connect ( vlayer, &QgsVectorLayer::selectionChanged, this , &Qgs3DMapScene ::onLayerRenderer3DChanged );
369
369
}
370
370
}
371
371
372
- void Scene ::removeLayerEntity ( QgsMapLayer *layer )
372
+ void Qgs3DMapScene ::removeLayerEntity ( QgsMapLayer *layer )
373
373
{
374
374
Qt3DCore::QEntity *entity = mLayerEntities .take ( layer );
375
375
if ( entity )
376
376
entity->deleteLater ();
377
377
378
- disconnect ( layer, &QgsMapLayer::renderer3DChanged, this , &Scene ::onLayerRenderer3DChanged );
378
+ disconnect ( layer, &QgsMapLayer::renderer3DChanged, this , &Qgs3DMapScene ::onLayerRenderer3DChanged );
379
379
380
380
if ( layer->type () == QgsMapLayer::VectorLayer )
381
381
{
382
382
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( layer );
383
- disconnect ( vlayer, &QgsVectorLayer::selectionChanged, this , &Scene ::onLayerRenderer3DChanged );
383
+ disconnect ( vlayer, &QgsVectorLayer::selectionChanged, this , &Qgs3DMapScene ::onLayerRenderer3DChanged );
384
384
}
385
385
}
0 commit comments