@@ -51,6 +51,7 @@ CGLColorMap::CGLColorMap(CGLModel *po) : CGLDataMap(po)
5151 AddDoubleParam (0 , " user_min" );
5252 AddBoolParam (false , " show_minmax_markers" , " Show min/max markers" );
5353 AddColorParam (GLColor (200 , 200 , 200 ), " inactive_color" );
54+ AddBoolParam (false , " ignore_hidden_mesh" , " Ignore hidden mesh" );
5455
5556 m_range.min = m_range.max = 0 ;
5657 m_range.mintype = m_range.maxtype = m_defaultRngType;
@@ -166,6 +167,8 @@ void CGLColorMap::UpdateRange(int n0, int n1, float dt, bool breset)
166167
167168 m_rmin = m_rmax = vec3d (0 , 0 , 0 );
168169
170+ bool ignoreHiddenMesh = GetBoolValue (IGNORE_HIDDEN_MESH);
171+
169172 // update the range
170173 float fmin = 1e29f, fmax = -1e29f;
171174 if (IS_ELEM_FIELD (m_nfield) && (m_bDispNodeVals == false ))
@@ -177,6 +180,8 @@ void CGLColorMap::UpdateRange(int n0, int n1, float dt, bool breset)
177180 for (int i = 0 ; i < NE; ++i)
178181 {
179182 FSElement_& el = pm->ElementRef (i);
183+ if (ignoreHiddenMesh && !el.IsVisible ()) continue ;
184+
180185 ELEMDATA& d0 = s0.m_ELEM [i];
181186 ELEMDATA& d1 = s1.m_ELEM [i];
182187 if ((d0.m_state & StatusFlags::ACTIVE) && (d1.m_state & StatusFlags::ACTIVE))
@@ -198,6 +203,8 @@ void CGLColorMap::UpdateRange(int n0, int n1, float dt, bool breset)
198203 for (int i = 0 ; i < NE; ++i)
199204 {
200205 FSElement_& el = pm->ElementRef (i);
206+ if (ignoreHiddenMesh && !el.IsVisible ()) continue ;
207+
201208 ELEMDATA& d0 = s0.m_ELEM [i];
202209 ELEMDATA& d1 = s1.m_ELEM [i];
203210 if ((d0.m_state & StatusFlags::ACTIVE) && (d1.m_state & StatusFlags::ACTIVE))
@@ -223,6 +230,8 @@ void CGLColorMap::UpdateRange(int n0, int n1, float dt, bool breset)
223230 for (int i = 0 ; i < NF; ++i)
224231 {
225232 FSFace& face = pm->Face (i);
233+ if (ignoreHiddenMesh && !face.IsVisible ()) continue ;
234+
226235 FACEDATA& d0 = s0.m_FACE [i];
227236 FACEDATA& d1 = s1.m_FACE [i];
228237 vec3d r = pm->FaceCenter (face);
@@ -241,6 +250,8 @@ void CGLColorMap::UpdateRange(int n0, int n1, float dt, bool breset)
241250 for (int i = 0 ; i < NF; ++i)
242251 {
243252 FSFace& face = pm->Face (i);
253+ if (ignoreHiddenMesh && !face.IsVisible ()) continue ;
254+
244255 FACEDATA& fd0 = s0.m_FACE [i];
245256 FACEDATA& fd1 = s1.m_FACE [i];
246257 if (face.IsEnabled () && (fd0.m_ntag > 0 ))
@@ -266,6 +277,8 @@ void CGLColorMap::UpdateRange(int n0, int n1, float dt, bool breset)
266277 for (int i = 0 ; i < pm->Nodes (); ++i)
267278 {
268279 FSNode& node = pm->Node (i);
280+ if (ignoreHiddenMesh && !node.IsVisible ()) continue ;
281+
269282 NODEDATA& d0 = s0.m_NODE [i];
270283 NODEDATA& d1 = s1.m_NODE [i];
271284 if ((node.IsEnabled ()) && (d0.m_ntag > 0 ) && (d1.m_ntag > 0 ))
0 commit comments