Skip to content
Snippets Groups Projects
Commit 6bce1b10 authored by Nicholas Milef's avatar Nicholas Milef
Browse files

ENH: moved visibility code from RenderMaterial to Geometry

parent 29e7bda6
No related branches found
No related tags found
No related merge requests found
......@@ -64,6 +64,21 @@ int main()
colorLight->setSpotAngle(1);
sceneTest->addLight(colorLight);
// Hide/show function
auto viewer = sdk->getViewer();
viewer->setOnCharFunction('v', [&](InteractorStyle* c) -> bool
{
if (cubeGeom->isVisible())
{
cubeGeom->hide();
}
else
{
cubeGeom->show();
}
return false;
});
// Update Camera
auto cam1 = sceneTest->getCamera();
cam1->setPosition(Vec3d(-5.5, 2.5, 32));
......
......@@ -252,4 +252,23 @@ Geometry::getRenderMaterial() const
{
return m_renderMaterial;
}
void
Geometry::show()
{
m_isVisible = true;
}
void
Geometry::hide()
{
m_isVisible = false;
}
bool
Geometry::isVisible() const
{
return m_isVisible;
}
} // imstk
......@@ -170,6 +170,13 @@ public:
void setRenderMaterial(std::shared_ptr<RenderMaterial> renderMaterial);
std::shared_ptr<RenderMaterial> getRenderMaterial() const;
///
/// \brief Visibility functions
///
void show();
void hide();
bool isVisible() const;
protected:
friend class VTKRenderer;
friend class VTKRenderDelegate;
......@@ -195,6 +202,8 @@ protected:
double m_scaling = 1.0;
std::shared_ptr<RenderMaterial> m_renderMaterial = nullptr; ///> Render material
bool m_isVisible = true;
};
} //imstk
......
......@@ -242,26 +242,6 @@ RenderMaterial::flatShadingOff()
m_flatShading = false;
}
void
RenderMaterial::setVisibilityOff()
{
m_isVisible = false;
m_modified = true;
}
void
RenderMaterial::setVisibilityOn()
{
m_isVisible = true;
m_modified = true;
}
bool
RenderMaterial::getVisibility() const
{
return m_isVisible;
}
void
RenderMaterial::setReceivesShadows(const bool receivesShadows)
{
......
......@@ -130,13 +130,6 @@ public:
void flatShadingOn();
void flatShadingOff();
///
/// \brief Turn on/off visibility
///
void setVisibilityOff();
void setVisibilityOn();
bool getVisibility() const;
///
/// \brief Get/Set shadow receiving ability
///
......
......@@ -194,6 +194,17 @@ VTKRenderDelegate::update()
this->updateDataSource();
this->updateActorTransform();
this->updateActorProperties();
if (this->getGeometry()->isVisible())
{
m_actor->VisibilityOn();
return;
}
else
{
m_actor->VisibilityOff();
return;
}
}
void
......@@ -272,16 +283,5 @@ VTKRenderDelegate::updateActorProperties()
// Material state is now up to date
material->m_stateModified = false;
if (material->getVisibility())
{
m_actor->VisibilityOn();
return;
}
else
{
m_actor->VisibilityOff();
return;
}
}
} // imstk
......@@ -730,14 +730,11 @@ VulkanRenderer::renderFrame()
for (unsigned int renderDelegateIndex = 0; renderDelegateIndex < m_renderDelegates.size(); renderDelegateIndex++)
{
if (m_renderDelegates[renderDelegateIndex]->getGeometry()->getType() == Geometry::Type::DecalPool)
{
continue;
}
auto material = m_renderDelegates[renderDelegateIndex]->m_shadowMaterial;
if (!m_renderDelegates[renderDelegateIndex]->getGeometry()->getRenderMaterial()->getCastsShadows())
if (m_renderDelegates[renderDelegateIndex]->getGeometry()->getType() == Geometry::Type::DecalPool
|| !m_renderDelegates[renderDelegateIndex]->getGeometry()->getRenderMaterial()->getCastsShadows()
|| !m_renderDelegates[renderDelegateIndex]->getGeometry()->isVisible())
{
continue;
}
......@@ -775,7 +772,8 @@ VulkanRenderer::renderFrame()
for (unsigned int renderDelegateIndex = 0; renderDelegateIndex < m_renderDelegates.size(); renderDelegateIndex++)
{
if (m_renderDelegates[renderDelegateIndex]->getGeometry()->getType() == Geometry::Type::DecalPool)
if (m_renderDelegates[renderDelegateIndex]->getGeometry()->getType() == Geometry::Type::DecalPool
|| !m_renderDelegates[renderDelegateIndex]->getGeometry()->isVisible())
{
continue;
}
......@@ -852,7 +850,8 @@ VulkanRenderer::renderFrame()
for (unsigned int renderDelegateIndex = 0; renderDelegateIndex < m_renderDelegates.size(); renderDelegateIndex++)
{
if (m_renderDelegates[renderDelegateIndex]->getGeometry()->getType() == Geometry::Type::DecalPool)
if (m_renderDelegates[renderDelegateIndex]->getGeometry()->getType() == Geometry::Type::DecalPool
|| !m_renderDelegates[renderDelegateIndex]->getGeometry()->isVisible())
{
continue;
}
......@@ -886,7 +885,8 @@ VulkanRenderer::renderFrame()
for (unsigned int renderDelegateIndex = 0; renderDelegateIndex < m_renderDelegates.size(); renderDelegateIndex++)
{
if (m_renderDelegates[renderDelegateIndex]->getGeometry()->getType() != Geometry::Type::DecalPool)
if (m_renderDelegates[renderDelegateIndex]->getGeometry()->getType() != Geometry::Type::DecalPool
|| !m_renderDelegates[renderDelegateIndex]->getGeometry()->isVisible())
{
continue;
}
......
......@@ -67,4 +67,5 @@ SceneObject::setName(const std::string& name)
{
m_name = name;
}
} // imstk
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment