From d9d39ebd37c2b1b4a976e6dcf9d8a883c4c6d287 Mon Sep 17 00:00:00 2001 From: Paolo Cignoni cignoni Date: Tue, 13 May 2014 20:31:34 +0000 Subject: [PATCH] Corrected include mess with filterscript.h and (important change) Changed the semantic of the MeshModel::UpdateDataMask - now it always enable a reqested attribute even if it should be already enabled. Re-enabling a ocf attribute is harmless and this can avoid the problem in which for some strange reasons the MeshModel bitmask is no more aligned with the real state of the mesh. --- src/common/meshmodel.cpp | 54 +++++++++++++++------------------------- src/common/meshmodel.h | 4 +-- 2 files changed, 22 insertions(+), 36 deletions(-) diff --git a/src/common/meshmodel.cpp b/src/common/meshmodel.cpp index 9ad298ab5..ea2aa3a79 100644 --- a/src/common/meshmodel.cpp +++ b/src/common/meshmodel.cpp @@ -29,7 +29,6 @@ #include #include "scriptinterface.h" #include -#include "../common/filterscript.h" using namespace vcg; @@ -668,39 +667,26 @@ bool MeshModel::hasDataMask(const int maskToBeTested) const void MeshModel::updateDataMask(int neededDataMask) { - if((neededDataMask & MM_FACEFACETOPO)!=0) - { - if (!hasDataMask(MM_FACEFACETOPO)) - cm.face.EnableFFAdjacency(); - tri::UpdateTopology::FaceFace(cm); - } - if((neededDataMask & MM_VERTFACETOPO)!=0) - { - if (!hasDataMask(MM_VERTFACETOPO)) - { - cm.vert.EnableVFAdjacency(); - cm.face.EnableVFAdjacency(); - } - tri::UpdateTopology::VertexFace(cm); - } - if( ( (neededDataMask & MM_WEDGTEXCOORD)!=0) && !hasDataMask(MM_WEDGTEXCOORD)) cm.face.EnableWedgeTexCoord(); - if( ( (neededDataMask & MM_FACECOLOR)!=0) && !hasDataMask(MM_FACECOLOR)) cm.face.EnableColor(); - if( ( (neededDataMask & MM_FACEQUALITY)!=0) && !hasDataMask(MM_FACEQUALITY)) cm.face.EnableQuality(); - if( ( (neededDataMask & MM_FACEMARK)!=0) && !hasDataMask(MM_FACEMARK)) cm.face.EnableMark(); - if( ( (neededDataMask & MM_VERTMARK)!=0) && !hasDataMask(MM_VERTMARK)) cm.vert.EnableMark(); - if( ( (neededDataMask & MM_VERTCURV)!=0) && !hasDataMask(MM_VERTCURV)) cm.vert.EnableCurvature(); - if( ( (neededDataMask & MM_VERTCURVDIR)!=0) && !hasDataMask(MM_VERTCURVDIR)) cm.vert.EnableCurvatureDir(); - if( ( (neededDataMask & MM_VERTRADIUS)!=0) && !hasDataMask(MM_VERTRADIUS)) cm.vert.EnableRadius(); - if( ( (neededDataMask & MM_VERTTEXCOORD)!=0) && !hasDataMask(MM_VERTTEXCOORD)) cm.vert.EnableTexCoord(); - - // if( ( (neededDataMask & MM_FACEFLAGBORDER) && !hasDataMask(MM_FACEFLAGBORDER) ) || - // ( (neededDataMask & MM_VERTFLAGBORDER) && !hasDataMask(MM_VERTFLAGBORDER) ) ) - // { - // if( (currentDataMask & MM_FACEFACETOPO) || (neededDataMask & MM_FACEFACETOPO)) - // tri::UpdateFlags::FaceBorderFromFF(cm); - // else tri::UpdateFlags::FaceBorderFromNone(cm); - // tri::UpdateFlags::VertexBorderFromFace(cm); - // } + if((neededDataMask & MM_FACEFACETOPO)!=0) + { + cm.face.EnableFFAdjacency(); + tri::UpdateTopology::FaceFace(cm); + } + if((neededDataMask & MM_VERTFACETOPO)!=0) + { + cm.vert.EnableVFAdjacency(); + cm.face.EnableVFAdjacency(); + tri::UpdateTopology::VertexFace(cm); + } + if((neededDataMask & MM_WEDGTEXCOORD)!=0) cm.face.EnableWedgeTexCoord(); + if((neededDataMask & MM_FACECOLOR)!=0) cm.face.EnableColor(); + if((neededDataMask & MM_FACEQUALITY)!=0) cm.face.EnableQuality(); + if((neededDataMask & MM_FACEMARK)!=0) cm.face.EnableMark(); + if((neededDataMask & MM_VERTMARK)!=0) cm.vert.EnableMark(); + if((neededDataMask & MM_VERTCURV)!=0) cm.vert.EnableCurvature(); + if((neededDataMask & MM_VERTCURVDIR)!=0) cm.vert.EnableCurvatureDir(); + if((neededDataMask & MM_VERTRADIUS)!=0) cm.vert.EnableRadius(); + if((neededDataMask & MM_VERTTEXCOORD)!=0) cm.vert.EnableTexCoord(); currentDataMask |= neededDataMask; } diff --git a/src/common/meshmodel.h b/src/common/meshmodel.h index 293ef9d41..2a922b23d 100644 --- a/src/common/meshmodel.h +++ b/src/common/meshmodel.h @@ -54,7 +54,7 @@ #include #include #include "GLLogStream.h" - +#include "filterscript.h" // Forward declarations needed for creating the used types class CVertexO; @@ -545,7 +545,7 @@ private: // QMap _rendermap; // QReadWriteLock _mutdoc; //}; -class FilterScript; +//class FilterScript; class MeshDocument : public QObject {