void MapCallback::onMapModelChanged( const MapModelChange& change ) { switch( change.getAction() ) { case MapModelChange::ADD_ELEVATION_LAYER: onElevationLayerAdded( change.getElevationLayer(), change.getFirstIndex() ); break; case MapModelChange::ADD_IMAGE_LAYER: onImageLayerAdded( change.getImageLayer(), change.getFirstIndex() ); break; case MapModelChange::ADD_MASK_LAYER: onMaskLayerAdded( change.getMaskLayer() ); break; case MapModelChange::ADD_MODEL_LAYER: onModelLayerAdded( change.getModelLayer(), change.getFirstIndex() ); break; case MapModelChange::REMOVE_ELEVATION_LAYER: onElevationLayerRemoved( change.getElevationLayer(), change.getFirstIndex() ); break; case MapModelChange::REMOVE_IMAGE_LAYER: onImageLayerRemoved( change.getImageLayer(), change.getFirstIndex() ); break; case MapModelChange::REMOVE_MASK_LAYER: onMaskLayerRemoved( change.getMaskLayer() ); break; case MapModelChange::REMOVE_MODEL_LAYER: onModelLayerRemoved( change.getModelLayer() ); break; case MapModelChange::MOVE_ELEVATION_LAYER: onElevationLayerMoved( change.getElevationLayer(), change.getFirstIndex(), change.getSecondIndex() ); break; case MapModelChange::MOVE_IMAGE_LAYER: onImageLayerMoved( change.getImageLayer(), change.getFirstIndex(), change.getSecondIndex() ); break; case MapModelChange::MOVE_MODEL_LAYER: onModelLayerMoved( change.getModelLayer(), change.getFirstIndex(), change.getSecondIndex() ); break; case MapModelChange::UNSPECIFIED: break; default: break; } }
void RexTerrainEngineNode::onMapModelChanged( const MapModelChange& change ) { if ( change.getAction() == MapModelChange::BEGIN_BATCH_UPDATE ) { _batchUpdateInProgress = true; } else if ( change.getAction() == MapModelChange::END_BATCH_UPDATE ) { _batchUpdateInProgress = false; if ( _refreshRequired ) refresh(); if ( _stateUpdateRequired ) updateState(); } else { // update the thread-safe map model copy: if ( _update_mapf->sync() ) { _liveTiles->setMapRevision( _update_mapf->getRevision() ); } // dispatch the change handler if ( change.getLayer() ) { // then apply the actual change: switch( change.getAction() ) { case MapModelChange::ADD_LAYER: if (change.getLayer()->getRenderType() == Layer::RENDERTYPE_TILE) addTileLayer( change.getLayer() ); else if (change.getElevationLayer()) addElevationLayer(change.getElevationLayer()); break; case MapModelChange::REMOVE_LAYER: if (change.getImageLayer()) removeImageLayer( change.getImageLayer() ); else if (change.getElevationLayer()) removeElevationLayer(change.getElevationLayer()); break; case MapModelChange::TOGGLE_ELEVATION_LAYER: toggleElevationLayer( change.getElevationLayer() ); break; default: break; } } } }
void OSGTerrainEngineNode::onMapModelChanged( const MapModelChange& change ) { _update_mapf->sync(); // dispatch the change handler if ( change.getLayer() ) { // first inform the texture compositor with the new model changes: if ( _texCompositor.valid() && change.getImageLayer() ) { _texCompositor->applyMapModelChange( change ); } // then apply the actual change: switch( change.getAction() ) { case MapModelChange::ADD_IMAGE_LAYER: addImageLayer( change.getImageLayer() ); break; case MapModelChange::REMOVE_IMAGE_LAYER: removeImageLayer( change.getImageLayer() ); break; case MapModelChange::ADD_ELEVATION_LAYER: addElevationLayer( change.getElevationLayer() ); break; case MapModelChange::REMOVE_ELEVATION_LAYER: removeElevationLayer( change.getElevationLayer() ); break; case MapModelChange::MOVE_IMAGE_LAYER: moveImageLayer( change.getFirstIndex(), change.getSecondIndex() ); break; case MapModelChange::MOVE_ELEVATION_LAYER: moveElevationLayer( change.getFirstIndex(), change.getSecondIndex() ); break; case MapModelChange::ADD_MODEL_LAYER: case MapModelChange::REMOVE_MODEL_LAYER: case MapModelChange::MOVE_MODEL_LAYER: default: break; } } // update the terrain revision in threaded mode if ( _isStreaming ) { //getTerrain()->incrementRevision(); static_cast<StreamingTerrainNode*>(_terrain)->updateTaskServiceThreads( *_update_mapf ); } }
void operator()(osg::Object*) { if ( s_updateRequired ) { updateControlPanel(); s_updateRequired = false; if (s_change.getElevationLayer()) { OE_NOTICE << "Dirtying model layers.\n"; dirtyModelLayers(); } } }
void TerrainEngineNode::onMapModelChanged( const MapModelChange& change ) { if (change.getAction() == MapModelChange::ADD_LAYER && change.getImageLayer() != 0L) { change.getImageLayer()->addCallback( _imageLayerController.get() ); } else if (change.getAction() == MapModelChange::REMOVE_LAYER && change.getImageLayer() != 0L) { change.getImageLayer()->removeCallback( _imageLayerController.get() ); } if (change.getElevationLayer() != 0L) { getTerrain()->notifyMapElevationChanged(); } // notify that a redraw is required. requestRedraw(); }
void MPTerrainEngineNode::onMapModelChanged( const MapModelChange& change ) { if ( change.getAction() == MapModelChange::BEGIN_BATCH_UPDATE ) { _batchUpdateInProgress = true; } else if ( change.getAction() == MapModelChange::END_BATCH_UPDATE ) { _batchUpdateInProgress = false; if ( _refreshRequired ) refresh(); if ( _stateUpdateRequired ) updateState(); } else { // update the thread-safe map model copy: if ( _update_mapf->sync() ) { _liveTiles->setMapRevision( _update_mapf->getRevision() ); } // dispatch the change handler if ( change.getLayer() ) { // then apply the actual change: switch( change.getAction() ) { case MapModelChange::ADD_IMAGE_LAYER: addImageLayer( change.getImageLayer() ); break; case MapModelChange::REMOVE_IMAGE_LAYER: removeImageLayer( change.getImageLayer() ); break; case MapModelChange::ADD_ELEVATION_LAYER: addElevationLayer( change.getElevationLayer() ); break; case MapModelChange::REMOVE_ELEVATION_LAYER: removeElevationLayer( change.getElevationLayer() ); break; case MapModelChange::MOVE_IMAGE_LAYER: moveImageLayer( change.getFirstIndex(), change.getSecondIndex() ); break; case MapModelChange::MOVE_ELEVATION_LAYER: moveElevationLayer( change.getFirstIndex(), change.getSecondIndex() ); break; case MapModelChange::TOGGLE_ELEVATION_LAYER: toggleElevationLayer( change.getElevationLayer() ); break; case MapModelChange::ADD_MODEL_LAYER: case MapModelChange::REMOVE_MODEL_LAYER: case MapModelChange::MOVE_MODEL_LAYER: default: break; } } } }
void MPTerrainEngineNode::onMapModelChanged( const MapModelChange& change ) { if ( change.getAction() == MapModelChange::BEGIN_BATCH_UPDATE ) { _batchUpdateInProgress = true; } else if ( change.getAction() == MapModelChange::END_BATCH_UPDATE ) { _batchUpdateInProgress = false; if ( _refreshRequired ) refresh(); if ( _shaderUpdateRequired ) updateShaders(); } else { // update the thread-safe map model copy: _update_mapf->sync(); // dispatch the change handler if ( change.getLayer() ) { // first inform the texture compositor with the new model changes: if ( _texCompositor.valid() && change.getImageLayer() ) { _texCompositor->applyMapModelChange( change ); } // then apply the actual change: switch( change.getAction() ) { case MapModelChange::ADD_IMAGE_LAYER: addImageLayer( change.getImageLayer() ); break; case MapModelChange::REMOVE_IMAGE_LAYER: removeImageLayer( change.getImageLayer() ); break; case MapModelChange::ADD_ELEVATION_LAYER: addElevationLayer( change.getElevationLayer() ); break; case MapModelChange::REMOVE_ELEVATION_LAYER: removeElevationLayer( change.getElevationLayer() ); break; case MapModelChange::MOVE_IMAGE_LAYER: moveImageLayer( change.getFirstIndex(), change.getSecondIndex() ); break; case MapModelChange::MOVE_ELEVATION_LAYER: moveElevationLayer( change.getFirstIndex(), change.getSecondIndex() ); break; case MapModelChange::ADD_MODEL_LAYER: case MapModelChange::REMOVE_MODEL_LAYER: case MapModelChange::MOVE_MODEL_LAYER: default: break; } } } }