#4862 Lock scale Z in comparison view to follow the main view.

#4858 Make timestep independent in comparison view. Make Linked Views timestep linking work
This commit is contained in:
Jacob Støren
2019-10-22 13:39:18 +02:00
parent eee8467e02
commit 016f26725a
6 changed files with 90 additions and 17 deletions

View File

@@ -332,6 +332,7 @@ void Rim3dView::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOr
caf::PdmUiGroup* gridGroup = uiOrdering.addNewGroup( "Grid Appearance" );
gridGroup->add( &scaleZ );
scaleZ.uiCapability()->setUiReadOnly( !this->isScaleZEditable() );
gridGroup->add( &meshMode );
gridGroup->add( &surfaceMode );
@@ -410,6 +411,15 @@ std::set<Rim3dView*> Rim3dView::viewsUsingThisAsComparisonView()
return containingViews;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool Rim3dView::isScaleZEditable()
{
return ( this->viewsUsingThisAsComparisonView().empty() ||
( this->viewController() && this->viewController()->isCameraLinked() ) );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -1005,6 +1015,11 @@ void Rim3dView::updateScaling()
viewer()->setPointOfInterest( poi );
}
if (activeComparisonView())
{
activeComparisonView()->setScaleZAndUpdate(scaleZ);
}
updateScaleTransform();
updateGridBoxData();
updateZScaleLabel();
@@ -1422,12 +1437,11 @@ Rim3dView* Rim3dView::prepareComparisonView()
return nullptr;
}
m_comparisonViewOrgTimestep = depView->currentTimeStep();
depView->m_currentTimeStep = currentTimeStep();
depView->clampCurrentTimestep();
m_comparisonViewOrgZScale = depView->scaleZ();
depView->scaleZ = scaleZ();
if ( depView->scaleZ() != scaleZ() )
{
depView->setScaleZAndUpdate( scaleZ() );
}
viewer()->setComparisonViewEyePointOffset( RimViewManipulator::calculateEquivalentCamPosOffset( this, depView ) );
@@ -1445,6 +1459,6 @@ void Rim3dView::restoreComparisonView()
CVF_ASSERT( depView );
depView->setOverrideViewer( nullptr );
depView->m_currentTimeStep = m_comparisonViewOrgTimestep;
depView->scaleZ = m_comparisonViewOrgZScale;
viewer()->setCurrentComparisonFrame(depView->currentTimeStep());
}