mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#266) Added static model interface
This commit is contained in:
parent
96acc1e75d
commit
c6454300d8
@ -200,6 +200,8 @@ cvf::Camera* caf::Viewer::mainCamera()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void caf::Viewer::setMainScene(cvf::Scene* scene)
|
||||
{
|
||||
appendAllStaticModelsToFrame(scene);
|
||||
|
||||
m_mainScene = scene;
|
||||
m_mainRendering->setScene(scene);
|
||||
}
|
||||
@ -544,6 +546,8 @@ void caf::Viewer::zoomAll()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void caf::Viewer::addFrame(cvf::Scene* scene)
|
||||
{
|
||||
appendAllStaticModelsToFrame(scene);
|
||||
|
||||
m_frameScenes.push_back(scene);
|
||||
m_animationControl->setNumFrames(static_cast<int>(m_frameScenes.size()));
|
||||
}
|
||||
@ -816,3 +820,75 @@ void caf::Viewer::navigationPolicyUpdate()
|
||||
update();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void caf::Viewer::addStaticModel(cvf::Model* model)
|
||||
{
|
||||
if (m_staticModels.contains(model)) return;
|
||||
|
||||
m_staticModels.push_back(model);
|
||||
|
||||
appendModelToAllFrames(model);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void caf::Viewer::removeStaticModel(cvf::Model* model)
|
||||
{
|
||||
removeModelFromAllFrames(model);
|
||||
|
||||
m_staticModels.erase(model);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void caf::Viewer::removeAllStaticModels()
|
||||
{
|
||||
for (size_t i = 0; i < m_staticModels.size(); i++)
|
||||
{
|
||||
removeModelFromAllFrames(m_staticModels.at(i));
|
||||
}
|
||||
|
||||
m_staticModels.clear();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void caf::Viewer::removeModelFromAllFrames(cvf::Model* model)
|
||||
{
|
||||
for (size_t i = 0; i < m_frameScenes.size(); i++)
|
||||
{
|
||||
cvf::Scene* scene = m_frameScenes.at(i);
|
||||
|
||||
scene->removeModel(model);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void caf::Viewer::appendModelToAllFrames(cvf::Model* model)
|
||||
{
|
||||
for (size_t i = 0; i < m_frameScenes.size(); i++)
|
||||
{
|
||||
cvf::Scene* scene = m_frameScenes.at(i);
|
||||
|
||||
scene->addModel(model);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void caf::Viewer::appendAllStaticModelsToFrame(cvf::Scene* scene)
|
||||
{
|
||||
for (size_t i = 0; i < m_staticModels.size(); i++)
|
||||
{
|
||||
scene->addModel(m_staticModels.at(i));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -49,19 +49,20 @@
|
||||
|
||||
namespace cvf {
|
||||
class Camera;
|
||||
class Scene;
|
||||
class Rendering;
|
||||
class RenderSequence;
|
||||
class OverlayScalarMapperLegend;
|
||||
class HitItemCollection;
|
||||
class Model;
|
||||
class OverlayImage;
|
||||
class OverlayScalarMapperLegend;
|
||||
class RenderSequence;
|
||||
class Rendering;
|
||||
class Scene;
|
||||
class TextureImage;
|
||||
}
|
||||
|
||||
namespace caf {
|
||||
class FrameAnimationControl;
|
||||
class Viewer;
|
||||
class NavigationPolicy;
|
||||
class Viewer;
|
||||
}
|
||||
|
||||
class QInputEvent;
|
||||
@ -93,6 +94,12 @@ public:
|
||||
cvf::Scene* frame(size_t frameIndex);
|
||||
void removeAllFrames();
|
||||
|
||||
// Static models to be shown in all frames
|
||||
void addStaticModel(cvf::Model* model);
|
||||
void removeStaticModel(cvf::Model* model);
|
||||
void removeAllStaticModels();
|
||||
|
||||
|
||||
// Recursively traverse all the scenes managed by the viewer and make sure all cached values are up-to-date
|
||||
// Use when changing the contents inside the objects in the scene.
|
||||
// As of yet: Only updates bounding boxes. Other things might be added later.
|
||||
@ -169,6 +176,10 @@ protected:
|
||||
private:
|
||||
void setupMainRendering();
|
||||
void setupRenderingSequence();
|
||||
|
||||
void appendAllStaticModelsToFrame(cvf::Scene* scene);
|
||||
void appendModelToAllFrames(cvf::Model* model);
|
||||
void removeModelFromAllFrames(cvf::Model* model);
|
||||
|
||||
void updateCamera(int width, int height);
|
||||
|
||||
@ -195,6 +206,7 @@ private:
|
||||
|
||||
caf::FrameAnimationControl* m_animationControl;
|
||||
cvf::Collection<cvf::Scene> m_frameScenes;
|
||||
cvf::Collection<cvf::Model> m_staticModels;
|
||||
};
|
||||
|
||||
} // End namespace caf
|
||||
|
Loading…
Reference in New Issue
Block a user