mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#316 Do not show wrong results ... #317 Avoid stopping animation when switching results This commit cleans up some of the inconsistencies etc in the top of the display model generation logic.
This commit is contained in:
@@ -651,7 +651,7 @@ bool RiaApplication::openEclipseCase(const QString& caseName, const QString& cas
|
||||
{
|
||||
riv->cellResult()->setResultVariable("SOIL");
|
||||
}
|
||||
riv->animationMode = true;
|
||||
riv->hasUserRequestedAnimation = true;
|
||||
|
||||
riv->loadDataAndUpdate();
|
||||
|
||||
@@ -688,7 +688,7 @@ bool RiaApplication::openInputEclipseCaseFromFileNames(const QStringList& fileNa
|
||||
RimEclipseView* riv = rimInputReservoir->createAndAddReservoirView();
|
||||
|
||||
riv->cellResult()->setResultType(RimDefines::INPUT_PROPERTY);
|
||||
riv->animationMode = true;
|
||||
riv->hasUserRequestedAnimation = true;
|
||||
|
||||
riv->loadDataAndUpdate();
|
||||
|
||||
|
||||
@@ -96,6 +96,7 @@ RigFemScalarResultFrames* RigFemPartResultsCollection::findOrLoadScalarResult(in
|
||||
{
|
||||
CVF_ASSERT(partIndex < (int)(m_femPartResults.size()));
|
||||
CVF_ASSERT(m_readerInterface.notNull());
|
||||
CVF_ASSERT(resVarAddr.isValid());
|
||||
|
||||
RigFemScalarResultFrames* frames = m_femPartResults[partIndex]->findScalarResult(resVarAddr);
|
||||
if (frames) return frames;
|
||||
@@ -145,17 +146,27 @@ int RigFemPartResultsCollection::frameCount()
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
/// Returns whether any of the parts actually had any of the requested results
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigFemPartResultsCollection::assertResultsLoaded(const RigFemResultAddress& resVarAddr)
|
||||
bool RigFemPartResultsCollection::assertResultsLoaded(const RigFemResultAddress& resVarAddr)
|
||||
{
|
||||
if (!resVarAddr.isValid()) return false;
|
||||
|
||||
bool foundResults = false;
|
||||
|
||||
for (int pIdx = 0; pIdx < static_cast<int>(m_femPartResults.size()); ++pIdx)
|
||||
{
|
||||
if (m_femPartResults[pIdx].notNull())
|
||||
{
|
||||
findOrLoadScalarResult(pIdx, resVarAddr);
|
||||
RigFemScalarResultFrames* scalarResults = findOrLoadScalarResult(pIdx, resVarAddr);
|
||||
for (int fIdx = 0; fIdx < scalarResults->frameCount(); ++fIdx)
|
||||
{
|
||||
foundResults = foundResults || scalarResults->frameData(fIdx).size();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return foundResults;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -163,6 +174,8 @@ void RigFemPartResultsCollection::assertResultsLoaded(const RigFemResultAddress&
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const std::vector<float>& RigFemPartResultsCollection::resultValues(const RigFemResultAddress& resVarAddr, int partIndex, int frameIndex)
|
||||
{
|
||||
CVF_ASSERT(resVarAddr.isValid());
|
||||
|
||||
RigFemScalarResultFrames* scalarResults = findOrLoadScalarResult(partIndex, resVarAddr);
|
||||
return scalarResults->frameData(frameIndex);
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public:
|
||||
|
||||
std::map<std::string, std::vector<std::string> > scalarFieldAndComponentNames(RigFemResultPosEnum resPos);
|
||||
std::vector<std::string> stepNames();
|
||||
void assertResultsLoaded(const RigFemResultAddress& resVarAddr);
|
||||
bool assertResultsLoaded(const RigFemResultAddress& resVarAddr);
|
||||
const std::vector<float>& resultValues(const RigFemResultAddress& resVarAddr, int partIndex, int frameIndex);
|
||||
|
||||
int frameCount();
|
||||
@@ -53,16 +53,11 @@ public:
|
||||
void meanScalarValue(const RigFemResultAddress& resVarAddr, double* meanValue);
|
||||
void p10p90ScalarValues(const RigFemResultAddress& resVarAddr, double* p10, double* p90);
|
||||
const std::vector<size_t>& scalarValuesHistogram(const RigFemResultAddress& resVarAddr);
|
||||
|
||||
private:
|
||||
RigFemScalarResultFrames* findOrLoadScalarResult(int partIndex,
|
||||
const RigFemResultAddress& resVarAddr);
|
||||
|
||||
|
||||
void minMaxScalarValuesInternal(const RigFemResultAddress& resVarAddr, int frameIndex,
|
||||
double* overallMin, double* overallMax);
|
||||
void posNegClosestToZeroInternal(const RigFemResultAddress& resVarAddr, int frameIndex,
|
||||
double* localPosClosestToZero, double* localNegClosestToZero);
|
||||
|
||||
friend class RigFemNativeStatCalc;
|
||||
cvf::Collection<RigFemPartResults> m_femPartResults;
|
||||
cvf::ref<RifGeoMechReaderInterface> m_readerInterface;
|
||||
|
||||
@@ -39,6 +39,15 @@ RigFemResultAddress(RigFemResultPosEnum resPosType,
|
||||
std::string fieldName;
|
||||
std::string componentName;
|
||||
|
||||
bool isValid() const
|
||||
{
|
||||
bool isTypeValid = resultPosType == RIG_NODAL
|
||||
|| resultPosType == RIG_ELEMENT_NODAL
|
||||
|| resultPosType == RIG_INTEGRATION_POINT;
|
||||
bool isFieldValid = fieldName != "";
|
||||
return isTypeValid && isFieldValid;
|
||||
}
|
||||
|
||||
bool operator< (const RigFemResultAddress& other ) const
|
||||
{
|
||||
if (resultPosType != other.resultPosType)
|
||||
|
||||
@@ -180,7 +180,7 @@ void Rim3dOverlayInfoConfig::updateReservoir3DInfo(RimEclipseView * reservoirVie
|
||||
infoText += QString("<b>Cell Property:</b> %1 ").arg(propName);
|
||||
}
|
||||
|
||||
if (reservoirView->animationMode() && reservoirView->cellResult()->hasResult())
|
||||
if (reservoirView->hasUserRequestedAnimation() && reservoirView->cellResult()->hasResult())
|
||||
{
|
||||
infoText += QString("<b>Cell Property:</b> %1 ").arg(propName);
|
||||
|
||||
@@ -232,7 +232,7 @@ void Rim3dOverlayInfoConfig::updateReservoir3DInfo(RimEclipseView * reservoirVie
|
||||
}
|
||||
|
||||
|
||||
if (reservoirView->animationMode() && reservoirView->cellEdgeResult()->hasResult())
|
||||
if (reservoirView->hasUserRequestedAnimation() && reservoirView->cellEdgeResult()->hasResult())
|
||||
{
|
||||
double min, max;
|
||||
reservoirView->cellEdgeResult()->minMaxCellEdgeValues(min, max);
|
||||
@@ -255,7 +255,7 @@ void Rim3dOverlayInfoConfig::updateReservoir3DInfo(RimEclipseView * reservoirVie
|
||||
|
||||
if (showHistogram())
|
||||
{
|
||||
if (reservoirView->animationMode() && reservoirView->cellResult()->hasResult())
|
||||
if (reservoirView->hasUserRequestedAnimation() && reservoirView->cellResult()->hasResult())
|
||||
{
|
||||
double min, max;
|
||||
double p10, p90;
|
||||
@@ -296,7 +296,7 @@ void Rim3dOverlayInfoConfig::updateGeoMech3DInfo(RimGeoMechView * geoMechView)
|
||||
"<p><b><center>-- %1 --</center></b><p>"
|
||||
"<b>Cell count:</b> %2 <b>Z-Scale:</b> %3<br>").arg(caseName, cellCount, zScale);
|
||||
|
||||
if (geoMechView->cellResult().notNull())
|
||||
if (geoMechView->hasUserRequestedAnimation() && geoMechView->cellResult()->hasResult())
|
||||
{
|
||||
QString resultPos;
|
||||
QString fieldName = geoMechView->cellResult()->resultFieldName();
|
||||
@@ -357,8 +357,8 @@ void Rim3dOverlayInfoConfig::updateGeoMech3DInfo(RimGeoMechView * geoMechView)
|
||||
|
||||
if (showHistogram())
|
||||
{
|
||||
if (geoMechView->cellResult().notNull())
|
||||
{
|
||||
if (geoMechView->hasUserRequestedAnimation() && geoMechView->cellResult()->hasResult())
|
||||
{
|
||||
QString fieldName = geoMechView->cellResult()->resultFieldName();
|
||||
QString compName = geoMechView->cellResult()->resultComponentName();
|
||||
QString resultName = compName.isEmpty() ? fieldName : compName;
|
||||
|
||||
@@ -450,11 +450,13 @@ void RimEclipseView::createDisplayModel()
|
||||
|
||||
if (isAnimationActive || cellResult->hasResult())
|
||||
{
|
||||
m_viewer->slotSetCurrentFrame(m_currentTimeStep);
|
||||
m_viewer->animationControl()->setCurrentFrame(m_currentTimeStep);
|
||||
}
|
||||
else
|
||||
{
|
||||
overlayInfoConfig()->update3DInfo();
|
||||
updateLegends();
|
||||
}
|
||||
|
||||
overlayInfoConfig()->update3DInfo();
|
||||
updateLegends();
|
||||
}
|
||||
|
||||
|
||||
@@ -463,6 +465,8 @@ void RimEclipseView::createDisplayModel()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEclipseView::updateCurrentTimeStep()
|
||||
{
|
||||
updateLegends(); // To make sure the scalar mappers are set up correctly
|
||||
|
||||
std::vector<RivReservoirViewPartMgr::ReservoirGeometryCacheType> geometriesToRecolor;
|
||||
|
||||
if (this->propertyFilterCollection()->hasActiveFilters())
|
||||
@@ -566,11 +570,11 @@ void RimEclipseView::updateCurrentTimeStep()
|
||||
|
||||
for (size_t i = 0; i < geometriesToRecolor.size(); ++i)
|
||||
{
|
||||
if (this->animationMode() && this->cellEdgeResult()->hasResult())
|
||||
if (this->hasUserRequestedAnimation() && this->cellEdgeResult()->hasResult())
|
||||
{
|
||||
m_reservoirGridPartManager->updateCellEdgeResultColor(geometriesToRecolor[i], m_currentTimeStep, this->cellResult(), this->cellEdgeResult());
|
||||
}
|
||||
else if ((this->animationMode() && this->cellResult()->hasResult()) || this->cellResult()->isTernarySaturationSelected())
|
||||
else if ((this->hasUserRequestedAnimation() && this->cellResult()->hasResult()) || this->cellResult()->isTernarySaturationSelected())
|
||||
{
|
||||
m_reservoirGridPartManager->updateCellResultColor(geometriesToRecolor[i], m_currentTimeStep, this->cellResult());
|
||||
}
|
||||
@@ -655,7 +659,6 @@ void RimEclipseView::updateCurrentTimeStep()
|
||||
}
|
||||
|
||||
overlayInfoConfig()->update3DInfo();
|
||||
updateLegends();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -1250,9 +1253,9 @@ void RimEclipseView::updateDisplayModelForWellResults()
|
||||
createDisplayModel();
|
||||
updateDisplayModelVisibility();
|
||||
|
||||
if (animationMode && m_viewer)
|
||||
if (hasUserRequestedAnimation() && m_viewer)
|
||||
{
|
||||
m_viewer->slotSetCurrentFrame(m_currentTimeStep);
|
||||
m_viewer->animationControl()->setCurrentFrame(m_currentTimeStep);
|
||||
}
|
||||
|
||||
RiuMainWindow::instance()->refreshAnimationActions();
|
||||
@@ -1386,7 +1389,7 @@ void RimEclipseView::updateFaultColors()
|
||||
|
||||
for (size_t i = 0; i < faultGeometriesToRecolor.size(); ++i)
|
||||
{
|
||||
if (this->animationMode() && this->cellEdgeResult()->hasResult())
|
||||
if (this->hasUserRequestedAnimation() && this->cellEdgeResult()->hasResult())
|
||||
{
|
||||
m_reservoirGridPartManager->updateFaultCellEdgeResultColor(faultGeometriesToRecolor[i], m_currentTimeStep, faultResultSlot, this->cellEdgeResult());
|
||||
}
|
||||
|
||||
@@ -174,13 +174,12 @@ void RimGeoMechResultSlot::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
|
||||
m_resultComponentName = "";
|
||||
}
|
||||
|
||||
m_reservoirView->geoMechCase()->geoMechData()->femPartResults()->assertResultsLoaded(this->resultAddress());
|
||||
|
||||
if (m_reservoirView)
|
||||
if (m_reservoirView->geoMechCase()->geoMechData()->femPartResults()->assertResultsLoaded(this->resultAddress()))
|
||||
{
|
||||
m_reservoirView->animationMode = true;
|
||||
m_reservoirView->createDisplayModelAndRedraw();
|
||||
m_reservoirView->hasUserRequestedAnimation = true;
|
||||
}
|
||||
|
||||
m_reservoirView->createDisplayModelAndRedraw();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -252,3 +251,11 @@ RigGeoMechCaseData* RimGeoMechResultSlot::ownerCaseData()
|
||||
{
|
||||
return m_reservoirView->geoMechCase()->geoMechData();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimGeoMechResultSlot::hasResult()
|
||||
{
|
||||
return ownerCaseData()->femPartResults()->assertResultsLoaded(this->resultAddress());
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ public:
|
||||
|
||||
void setReservoirView(RimGeoMechView* ownerReservoirView);
|
||||
RigGeoMechCaseData* ownerCaseData();
|
||||
bool hasResult();
|
||||
|
||||
RigFemResultAddress resultAddress() { return RigFemResultAddress(resultPositionType(), resultFieldName().toStdString(), resultComponentName().toStdString());}
|
||||
|
||||
|
||||
@@ -141,8 +141,10 @@ void RimGeoMechView::loadDataAndUpdate()
|
||||
progress.setProgressDescription("Reading Current Result");
|
||||
|
||||
CVF_ASSERT(this->cellResult() != NULL);
|
||||
m_geomechCase->geoMechData()->femPartResults()->assertResultsLoaded(this->cellResult()->resultAddress());
|
||||
|
||||
if (this->hasUserRequestedAnimation())
|
||||
{
|
||||
m_geomechCase->geoMechData()->femPartResults()->assertResultsLoaded(this->cellResult()->resultAddress());
|
||||
}
|
||||
progress.incrementProgress();
|
||||
progress.setProgressDescription("Create Display model");
|
||||
|
||||
@@ -220,7 +222,6 @@ void RimGeoMechView::createDisplayModel()
|
||||
// Remove all existing animation frames from the viewer.
|
||||
// The parts are still cached in the RivReservoir geometry and friends
|
||||
|
||||
bool isAnimationActive = m_viewer->isAnimationActive();
|
||||
m_viewer->removeAllFrames();
|
||||
|
||||
m_vizLogic->appendNoAnimPartsToModel(frameModels[0].p());
|
||||
@@ -246,13 +247,15 @@ void RimGeoMechView::createDisplayModel()
|
||||
|
||||
// If the animation was active before recreating everything, make viewer view current frame
|
||||
|
||||
if (isAnimationActive && cellResult->resultFieldName() != "")
|
||||
if (isTimeStepDependentDataVisible())
|
||||
{
|
||||
m_viewer->slotSetCurrentFrame(m_currentTimeStep);
|
||||
m_viewer->animationControl()->setCurrentFrame(m_currentTimeStep);
|
||||
}
|
||||
else
|
||||
{
|
||||
updateLegends();
|
||||
overlayInfoConfig()->update3DInfo();
|
||||
}
|
||||
|
||||
updateLegends();
|
||||
overlayInfoConfig()->update3DInfo();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -261,7 +264,8 @@ void RimGeoMechView::createDisplayModel()
|
||||
void RimGeoMechView::updateCurrentTimeStep()
|
||||
{
|
||||
updateLegends();
|
||||
if ((this->animationMode() && cellResult()->resultFieldName() != ""))
|
||||
|
||||
if (this->isTimeStepDependentDataVisible())
|
||||
{
|
||||
if (m_viewer)
|
||||
{
|
||||
@@ -282,6 +286,7 @@ void RimGeoMechView::updateCurrentTimeStep()
|
||||
else
|
||||
{
|
||||
this->updateStaticCellColors();
|
||||
m_viewer->animationControl()->slotPause(); // To avoid animation timer spinning in the background
|
||||
}
|
||||
|
||||
overlayInfoConfig()->update3DInfo();
|
||||
@@ -367,46 +372,37 @@ void RimGeoMechView::updateLegends()
|
||||
m_viewer->removeAllColorLegends();
|
||||
}
|
||||
|
||||
if (!m_geomechCase || !m_viewer || !m_geomechCase->geoMechData() )
|
||||
if (!m_geomechCase || !m_viewer || !m_geomechCase->geoMechData()
|
||||
|| !this->isTimeStepDependentDataVisible() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
RigGeoMechCaseData* gmCase = m_geomechCase->geoMechData();
|
||||
CVF_ASSERT(gmCase);
|
||||
|
||||
|
||||
double localMin, localMax;
|
||||
double localPosClosestToZero, localNegClosestToZero;
|
||||
double globalMin, globalMax;
|
||||
double globalPosClosestToZero, globalNegClosestToZero;
|
||||
|
||||
RigFemResultAddress resVarAddress = cellResult->resultAddress();
|
||||
if (resVarAddress.fieldName != "")
|
||||
{
|
||||
gmCase->femPartResults()->minMaxScalarValues(resVarAddress, m_currentTimeStep, &localMin, &localMax);
|
||||
gmCase->femPartResults()->posNegClosestToZero(resVarAddress, m_currentTimeStep, &localPosClosestToZero, &localNegClosestToZero);
|
||||
RigGeoMechCaseData* gmCase = m_geomechCase->geoMechData();
|
||||
CVF_ASSERT(gmCase);
|
||||
|
||||
gmCase->femPartResults()->minMaxScalarValues(resVarAddress, &globalMin, &globalMax);
|
||||
gmCase->femPartResults()->posNegClosestToZero(resVarAddress, &globalPosClosestToZero, &globalNegClosestToZero);
|
||||
RigFemResultAddress resVarAddress = cellResult()->resultAddress();
|
||||
|
||||
gmCase->femPartResults()->minMaxScalarValues(resVarAddress, m_currentTimeStep, &localMin, &localMax);
|
||||
gmCase->femPartResults()->posNegClosestToZero(resVarAddress, m_currentTimeStep, &localPosClosestToZero, &localNegClosestToZero);
|
||||
|
||||
gmCase->femPartResults()->minMaxScalarValues(resVarAddress, &globalMin, &globalMax);
|
||||
gmCase->femPartResults()->posNegClosestToZero(resVarAddress, &globalPosClosestToZero, &globalNegClosestToZero);
|
||||
|
||||
|
||||
cellResult->legendConfig->setClosestToZeroValues(globalPosClosestToZero, globalNegClosestToZero, localPosClosestToZero, localNegClosestToZero);
|
||||
cellResult->legendConfig->setAutomaticRanges(globalMin, globalMax, localMin, localMax);
|
||||
|
||||
m_viewer->addColorLegendToBottomLeftCorner(cellResult->legendConfig->legend());
|
||||
|
||||
cellResult->legendConfig->legend()->setTitle(cvfqt::Utils::toString(
|
||||
caf::AppEnum<RigFemResultPosEnum>(cellResult->resultPositionType()).uiText() + "\n"
|
||||
+ cellResult->resultFieldName() + " " + cellResult->resultComponentName() ));
|
||||
}
|
||||
else
|
||||
{
|
||||
cellResult->legendConfig->setClosestToZeroValues(0, 0, 0, 0);
|
||||
cellResult->legendConfig->setAutomaticRanges(cvf::UNDEFINED_DOUBLE, cvf::UNDEFINED_DOUBLE, cvf::UNDEFINED_DOUBLE, cvf::UNDEFINED_DOUBLE);
|
||||
}
|
||||
cellResult()->legendConfig->setClosestToZeroValues(globalPosClosestToZero, globalNegClosestToZero, localPosClosestToZero, localNegClosestToZero);
|
||||
cellResult()->legendConfig->setAutomaticRanges(globalMin, globalMax, localMin, localMax);
|
||||
|
||||
m_viewer->addColorLegendToBottomLeftCorner(cellResult()->legendConfig->legend());
|
||||
|
||||
cellResult()->legendConfig->legend()->setTitle(cvfqt::Utils::toString(
|
||||
caf::AppEnum<RigFemResultPosEnum>(cellResult->resultPositionType()).uiText() + "\n"
|
||||
+ cellResult->resultFieldName() + " " + cellResult->resultComponentName()));
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -437,7 +433,7 @@ void RimGeoMechView::clampCurrentTimestep()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimGeoMechView::isTimeStepDependentDataVisible()
|
||||
{
|
||||
return (cellResult->resultFieldName() != "");
|
||||
return this->hasUserRequestedAnimation() && this->cellResult()->hasResult();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -75,7 +75,7 @@ void RimResultSlot::fieldChangedByUi(const caf::PdmFieldHandle* changedField, co
|
||||
|
||||
if (newValue != RimDefines::undefinedResultName())
|
||||
{
|
||||
if (m_reservoirView) m_reservoirView->animationMode = true;
|
||||
if (m_reservoirView) m_reservoirView->hasUserRequestedAnimation = true;
|
||||
}
|
||||
|
||||
RiuMainWindow::instance()->uiPdmModel()->updateUiSubTree(this);
|
||||
|
||||
@@ -71,8 +71,8 @@ RimView::RimView(void)
|
||||
|
||||
CAF_PDM_InitField(&maximumFrameRate, "MaximumFrameRate", 10, "Maximum frame rate", "", "", "");
|
||||
maximumFrameRate.setUiHidden(true);
|
||||
CAF_PDM_InitField(&animationMode, "AnimationMode", false, "Animation Mode", "", "", "");
|
||||
animationMode.setUiHidden(true);
|
||||
CAF_PDM_InitField(&hasUserRequestedAnimation, "AnimationMode", false, "Animation Mode", "", "", "");
|
||||
hasUserRequestedAnimation.setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitField(&m_currentTimeStep, "CurrentTimeStep", 0, "Current Time Step", "", "", "");
|
||||
m_currentTimeStep.setUiHidden(true);
|
||||
@@ -187,7 +187,7 @@ void RimView::scheduleCreateDisplayModelAndRedraw()
|
||||
void RimView::setCurrentTimeStep(int frameIndex)
|
||||
{
|
||||
m_currentTimeStep = frameIndex;
|
||||
this->animationMode = true;
|
||||
this->hasUserRequestedAnimation = true;
|
||||
this->updateCurrentTimeStep();
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -207,17 +207,10 @@ void RimView::createDisplayModelAndRedraw()
|
||||
{
|
||||
if (m_viewer)
|
||||
{
|
||||
m_viewer->animationControl()->slotStop();
|
||||
|
||||
this->clampCurrentTimestep();
|
||||
|
||||
createDisplayModel();
|
||||
updateDisplayModelVisibility();
|
||||
|
||||
if (m_viewer->frameCount() > 0)
|
||||
{
|
||||
m_viewer->animationControl()->setCurrentFrame(m_currentTimeStep);
|
||||
}
|
||||
}
|
||||
|
||||
RiuMainWindow::instance()->refreshAnimationActions();
|
||||
@@ -241,7 +234,7 @@ void RimView::setDefaultView()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimView::endAnimation()
|
||||
{
|
||||
this->animationMode = false;
|
||||
this->hasUserRequestedAnimation = false;
|
||||
this->updateStaticCellColors();
|
||||
}
|
||||
|
||||
@@ -253,7 +246,7 @@ void RimView::setupBeforeSave()
|
||||
{
|
||||
if (m_viewer)
|
||||
{
|
||||
animationMode = m_viewer->isAnimationActive();
|
||||
hasUserRequestedAnimation = m_viewer->isAnimationActive(); // JJS: This is not conceptually correct. The variable is updated as we go, and store the user intentions. But I guess that in practice...
|
||||
cameraPosition = m_viewer->mainCamera()->viewMatrix();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ public:
|
||||
caf::PdmField< cvf::Color3f > backgroundColor;
|
||||
|
||||
caf::PdmField<int> maximumFrameRate;
|
||||
caf::PdmField<bool> animationMode;
|
||||
caf::PdmField<bool> hasUserRequestedAnimation;
|
||||
|
||||
caf::PdmField<RimCellRangeFilterCollection*> rangeFilterCollection;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user