#4849 Fix crash, timestep and legend issues on cyclick connections

This commit is contained in:
Jacob Støren 2019-10-11 14:34:59 +02:00
parent b0f8dfa9e6
commit 4a9dc3bcbe
4 changed files with 42 additions and 28 deletions

View File

@ -388,10 +388,8 @@ void Rim3dView::setCurrentTimeStepAndUpdate( int frameIndex )
this->updateCurrentTimeStep();
if ( Rim3dView* depView = activeComparisonView() )
if ( Rim3dView* depView = prepareComparisonView() )
{
prepareComparisonView();
depView->updateCurrentTimeStep();
depView->appendAnnotationsToModel();
depView->appendMeasurementToModel();
@ -455,10 +453,8 @@ void Rim3dView::updateCurrentTimeStepAndRedraw()
{
this->updateCurrentTimeStep();
if ( Rim3dView* depView = activeComparisonView() )
if ( Rim3dView* depView = prepareComparisonView() )
{
prepareComparisonView();
depView->updateCurrentTimeStep();
restoreComparisonView();
@ -493,24 +489,26 @@ void Rim3dView::createDisplayModelAndRedraw()
m_cameraPointOfInterest = nativeOrOverrideViewer()->pointOfInterest();
}
if ( Rim3dView* depView = activeComparisonView() )
if ( Rim3dView* depView = prepareComparisonView() )
{
prepareComparisonView();
depView->createDisplayModelAndRedraw();
if ( isTimeStepDependentDataVisibleInThisOrComparisonView() )
{
// To make the override viewer see the new frame (skeletons) created by createDisplayModelAndRedraw
nativeOrOverrideViewer()->slotSetCurrentFrame( currentTimeStep() );
// But avoid any call back down to this Rim3dView, instead do the update manually to not confuse the
// m_currentTimeStep
nativeOrOverrideViewer()->caf::Viewer::slotSetCurrentFrame( currentTimeStep() );
depView->updateCurrentTimeStep();
}
restoreComparisonView();
}
else if ( viewer() )
else if ( !isUsingOverrideViewer() && viewer() )
{
// Remove the comparison scene data
// Remove the comparison scene data when
// we do not have a comparison view
// and are not doing override generation
viewer()->setMainScene( nullptr, true );
viewer()->removeAllFrames( true );
}
@ -1364,12 +1362,20 @@ Rim3dView* Rim3dView::activeComparisonView() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dView::prepareComparisonView()
Rim3dView* Rim3dView::prepareComparisonView()
{
Rim3dView* depView = activeComparisonView();
CVF_ASSERT( depView );
// prepareComparisonView
if ( !depView )
{
return nullptr;
}
if (isUsingOverrideViewer())
{
return nullptr;
}
m_comparisonViewOrgTimestep = depView->currentTimeStep();
depView->m_currentTimeStep = currentTimeStep();
depView->clampCurrentTimestep();
@ -1380,6 +1386,8 @@ void Rim3dView::prepareComparisonView()
viewer()->setComparisonViewEyePointOffset( RimViewManipulator::calculateEquivalentCamPosOffset( this, depView ) );
depView->setOverrideViewer( viewer() );
return depView;
}
//--------------------------------------------------------------------------------------------------

View File

@ -297,8 +297,8 @@ private:
void setOverrideViewer( RiuViewer* overrideViewer );
Rim3dView* activeComparisonView() const;
void prepareComparisonView();
void restoreComparisonView();
Rim3dView* prepareComparisonView();
void restoreComparisonView();
private:
QPointer<RiuViewer> m_viewer;

View File

@ -395,7 +395,7 @@ void RimEclipseView::createDisplayModel()
// Remove all existing animation frames from the viewer.
// The parts are still cached in the RivReservoir geometry and friends
nativeOrOverrideViewer()->removeAllFrames(isUsingOverrideViewer());
nativeOrOverrideViewer()->removeAllFrames( isUsingOverrideViewer() );
wellCollection()->scheduleIsWellPipesVisibleRecalculation();
@ -547,16 +547,16 @@ void RimEclipseView::createDisplayModel()
scene->addModel( model );
if ( frameIndex == 0 )
nativeOrOverrideViewer()->setMainScene( scene.p() ,isUsingOverrideViewer() );
nativeOrOverrideViewer()->setMainScene( scene.p(), isUsingOverrideViewer() );
else
nativeOrOverrideViewer()->addFrame( scene.p() , isUsingOverrideViewer() );
nativeOrOverrideViewer()->addFrame( scene.p(), isUsingOverrideViewer() );
}
// If the animation was active before recreating everything, make viewer view current frame
if ( frameModels.size() > 1 && this->hasUserRequestedAnimation() )
{
if (viewer()) viewer()->setCurrentFrame( m_currentTimeStep );
if ( viewer() && !isUsingOverrideViewer() ) viewer()->setCurrentFrame( m_currentTimeStep );
}
else
{
@ -1171,11 +1171,14 @@ void RimEclipseView::updateLegends()
{
nativeOrOverrideViewer()->removeColorLegend( this->cellEdgeResult()->legendConfig()->titledOverlayFrame() );
nativeOrOverrideViewer()->removeColorLegend( fractureColors()->activeLegend()->titledOverlayFrame() );
nativeOrOverrideViewer()->removeColorLegend( m_virtualPerforationResult->legendConfig()->titledOverlayFrame() );
nativeOrOverrideViewer()->removeColorLegend(
m_virtualPerforationResult->legendConfig()->titledOverlayFrame() );
nativeOrOverrideViewer()->removeColorLegend( this->cellResult()->legendConfig()->titledOverlayFrame() );
nativeOrOverrideViewer()->removeColorLegend( this->cellResult()->ternaryLegendConfig()->titledOverlayFrame() );
nativeOrOverrideViewer()->removeColorLegend( this->currentFaultResultColors()->legendConfig()->titledOverlayFrame() );
nativeOrOverrideViewer()->removeColorLegend( this->currentFaultResultColors()->ternaryLegendConfig()->titledOverlayFrame() );
nativeOrOverrideViewer()->removeColorLegend(
this->currentFaultResultColors()->legendConfig()->titledOverlayFrame() );
nativeOrOverrideViewer()->removeColorLegend(
this->currentFaultResultColors()->ternaryLegendConfig()->titledOverlayFrame() );
}
}
@ -1235,7 +1238,8 @@ void RimEclipseView::updateLegends()
this->cellEdgeResult()->legendConfig()->setTitle( QString( "Edge Results: \n" ) +
this->cellEdgeResult()->resultVariableUiShortName() );
nativeOrOverrideViewer()->addColorLegendToBottomLeftCorner( this->cellEdgeResult()->legendConfig()->titledOverlayFrame() );
nativeOrOverrideViewer()->addColorLegendToBottomLeftCorner(
this->cellEdgeResult()->legendConfig()->titledOverlayFrame() );
}
else
{
@ -1319,7 +1323,8 @@ void RimEclipseView::updateMinMaxValuesAndAddLegendToView( QString
resultColors->ternaryLegendConfig()->titledOverlayFrame() )
{
resultColors->ternaryLegendConfig()->setTitle( legendLabel );
nativeOrOverrideViewer()->addColorLegendToBottomLeftCorner( resultColors->ternaryLegendConfig()->titledOverlayFrame() );
nativeOrOverrideViewer()->addColorLegendToBottomLeftCorner(
resultColors->ternaryLegendConfig()->titledOverlayFrame() );
}
}
}
@ -1835,7 +1840,8 @@ void RimEclipseView::resetLegendsInViewer()
nativeOrOverrideViewer()->addColorLegendToBottomLeftCorner( cellResultNormalLegendConfig->titledOverlayFrame() );
}
nativeOrOverrideViewer()->addColorLegendToBottomLeftCorner( this->cellEdgeResult()->legendConfig()->titledOverlayFrame() );
nativeOrOverrideViewer()->addColorLegendToBottomLeftCorner(
this->cellEdgeResult()->legendConfig()->titledOverlayFrame() );
}
//--------------------------------------------------------------------------------------------------

View File

@ -293,7 +293,7 @@ void RimGeoMechView::createDisplayModel()
if ( isTimeStepDependentDataVisibleInThisOrComparisonView() )
{
if ( viewer() ) viewer()->setCurrentFrame( m_currentTimeStep );
if ( viewer() && !isUsingOverrideViewer() ) viewer()->setCurrentFrame( m_currentTimeStep );
}
else
{