Skip to content

Commit

Permalink
[Controller+Engine] Rename Data (#4678)
Browse files Browse the repository at this point in the history
* [Controller+Engine] Rename Data

* [Controller+Engine] Fix issue

* [Controller+Engine] Fix Renaming size var problem

* Update Sofa/Component/Controller/src/sofa/component/controller/Controller.h

Co-authored-by: Hugo <hugo.talbot@sofa-framework.org>

---------

Co-authored-by: Hugo <hugo.talbot@sofa-framework.org>
  • Loading branch information
lamriaimen and hugtalbot committed May 2, 2024
1 parent c8ea977 commit 8cb5496
Show file tree
Hide file tree
Showing 7 changed files with 129 additions and 55 deletions.
Expand Up @@ -38,9 +38,9 @@ namespace sofa::component::controller


Controller::Controller()
: handleEventTriggersUpdate( initData(&handleEventTriggersUpdate, false, "handleEventTriggersUpdate", "Event handling frequency controls the controller update frequency" ) )
: d_handleEventTriggersUpdate(initData(&d_handleEventTriggersUpdate, false, "handleEventTriggersUpdate", "Event handling frequency controls the controller update frequency" ) )
{

handleEventTriggersUpdate.setParent(&d_handleEventTriggersUpdate);
}

Controller::~Controller()
Expand Down
Expand Up @@ -108,8 +108,11 @@ class SOFA_COMPONENT_CONTROLLER_API Controller : public core::behavior::BaseCont
virtual void onGUIEvent(core::objectmodel::GUIEvent *) {}

protected:
SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
Data < bool > handleEventTriggersUpdate;

Data< bool > handleEventTriggersUpdate; ///< Event reception triggers object update ?

Data< bool > d_handleEventTriggersUpdate; ///< Event reception triggers object update

public:

Expand Down
Expand Up @@ -130,7 +130,7 @@ void MechanicalStateController<Vec1Types>::onMouseEvent(core::objectmodel::Mouse
default :
break;
}
if (handleEventTriggersUpdate.getValue())
if (d_handleEventTriggersUpdate.getValue())
applyController();

}
Expand Down Expand Up @@ -175,7 +175,7 @@ void MechanicalStateController<Rigid3Types>::onMouseEvent(core::objectmodel::Mou
break;

case sofa::core::objectmodel::MouseEvent::Move :
if (handleEventTriggersUpdate.getValue())
if (d_handleEventTriggersUpdate.getValue())
applyController();
break;

Expand Down
Expand Up @@ -36,3 +36,12 @@ namespace sofa::component::controller
constexpr const char* MODULE_NAME = "@PROJECT_NAME@";
constexpr const char* MODULE_VERSION = "@PROJECT_VERSION@";
} // namespace sofa::component::controller

#ifdef SOFA_BUILD_SOFA_COMPONENT_CONTROLLER
#define SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
#else
#define SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA() \
SOFA_ATTRIBUTE_DEPRECATED( \
"v24.06", "v24.12", \
"Data renamed according to the guidelines")
#endif
Expand Up @@ -39,32 +39,46 @@ int MeshTetraStuffingClass = core::RegisterObject("Create a tetrahedral volume m
;

MeshTetraStuffing::MeshTetraStuffing()
: vbbox(initData(&vbbox,"vbbox","BBox to restrict the volume to"))
, size(initData(&size,(Real)-8.0,"size","Size of the generate tetrahedra. If negative, number of grid cells in the largest bbox dimension"))
, inputPoints(initData(&inputPoints,"inputPoints","Input surface mesh points"))
, inputTriangles(initData(&inputTriangles,"inputTriangles","Input surface mesh triangles"))
, inputQuads(initData(&inputQuads,"inputQuads","Input surface mesh quads"))
, outputPoints(initData(&outputPoints,"outputPoints","Output volume mesh points"))
, outputTetrahedra(initData(&outputTetrahedra,"outputTetrahedra","Output volume mesh tetrahedra"))
, alphaLong(initData(&alphaLong,(Real)0.24999,"alphaLong","Minimum alpha values on long edges when snapping points"))
, alphaShort(initData(&alphaShort,(Real)0.42978,"alphaShort","Minimum alpha values on short edges when snapping points"))
, bSnapPoints(initData(&bSnapPoints,false,"snapPoints","Snap points to the surface if intersections on edges are closed to given alpha values"))
, bSplitTetrahedra(initData(&bSplitTetrahedra,false,"splitTetrahedra","Split tetrahedra crossing the surface"))
, bDraw(initData(&bDraw,false,"draw","Activate rendering of internal datasets"))
: d_vbbox(initData(&d_vbbox, "d_vbbox", "BBox to restrict the volume to"))
, d_size(initData(&d_size,(Real)-8.0,"size","Size of the generate tetrahedra. If negative, number of grid cells in the largest bbox dimension"))
, d_inputPoints(initData(&d_inputPoints, "inputPoints", "Input surface mesh points"))
, d_inputTriangles(initData(&d_inputTriangles, "inputTriangles", "Input surface mesh triangles"))
, d_inputQuads(initData(&d_inputQuads, "inputQuads", "Input surface mesh quads"))
, d_outputPoints(initData(&d_outputPoints, "outputPoints", "Output volume mesh points"))
, d_outputTetrahedra(initData(&d_outputTetrahedra, "outputTetrahedra", "Output volume mesh tetrahedra"))
, d_alphaLong(initData(&d_alphaLong, (Real)0.24999, "alphaLong", "Minimum alpha values on long edges when snapping points"))
, d_alphaShort(initData(&d_alphaShort, (Real)0.42978, "alphaShort", "Minimum alpha values on short edges when snapping points"))
, d_bSnapPoints(initData(&d_bSnapPoints, false, "snapPoints", "Snap points to the surface if intersections on edges are closed to given alpha values"))
, d_bSplitTetrahedra(initData(&d_bSplitTetrahedra, false, "splitTetrahedra", "Split tetrahedra crossing the surface"))
, d_bDraw(initData(&d_bDraw, false, "draw", "Activate rendering of internal datasets"))
{
addAlias(&outputTetrahedra,"outputTetras");
addAlias(&bSplitTetrahedra,"splitTetras");
addAlias(&d_outputTetrahedra, "outputTetras");
addAlias(&d_bSplitTetrahedra, "splitTetras");

addInput(&inputPoints);
addInput(&inputTriangles);
addInput(&inputQuads);
addInput(&alphaLong);
addInput(&alphaShort);
addInput(&bSnapPoints);
addInput(&bSplitTetrahedra);
addInput(&d_inputPoints);
addInput(&d_inputTriangles);
addInput(&d_inputQuads);
addInput(&d_alphaLong);
addInput(&d_alphaShort);
addInput(&d_bSnapPoints);
addInput(&d_bSplitTetrahedra);

//addOutput(&outputPoints);
//addOutput(&outputTetrahedra);

vbbox.setParent(&d_vbbox);
size.setParent(&d_size);
inputPoints.setParent(&d_inputPoints);
inputTriangles.setParent(&d_inputTriangles);
inputQuads.setParent(&d_inputQuads);
outputPoints.setParent(&d_outputPoints);
outputTetrahedra.setParent(&d_outputTetrahedra);
alphaLong.setParent(&d_alphaLong);
alphaShort.setParent(&d_alphaShort);
bSnapPoints.setParent(&d_bSnapPoints);
bSplitTetrahedra.setParent(&d_bSplitTetrahedra);
bDraw.setParent(&d_bDraw);

}

MeshTetraStuffing::~MeshTetraStuffing()
Expand All @@ -80,9 +94,9 @@ void MeshTetraStuffing::init()

void MeshTetraStuffing::doUpdate()
{
const SeqPoints& inP = inputPoints.getValue();
SeqTriangles inT = inputTriangles.getValue();
const SeqQuads& inQ = inputQuads.getValue();
const SeqPoints& inP = d_inputPoints.getValue();
SeqTriangles inT = d_inputTriangles.getValue();
const SeqQuads& inQ = d_inputQuads.getValue();
if (inP.empty() || (inT.empty() && inQ.empty()))
{
msg_error() << "Empty input mesh. Use data dependency to link them to a loaded Topology or MeshLoader";
Expand Down Expand Up @@ -118,15 +132,15 @@ void MeshTetraStuffing::doUpdate()
}
}

type::fixed_array<Point, 2>& bb = *vbbox.beginEdit();
type::fixed_array<Point, 2>& bb = *d_vbbox.beginEdit();
if (bb[0][0] >= bb[1][0])
{
bb[0] = inputBBox[0] - (inputBBox[1]-inputBBox[0])*0.01;
bb[1] = inputBBox[1] + (inputBBox[1]-inputBBox[0])*0.01;
}
vbbox.endEdit();
d_vbbox.endEdit();

cellsize = size.getValue();
cellsize = d_size.getValue();
if (cellsize < 0)
{
Point b = bb[1]-bb[0];
Expand Down Expand Up @@ -158,8 +172,8 @@ void MeshTetraStuffing::doUpdate()

msg_info() << "Grid <"<<c0[0]<<","<<c0[1]<<","<<c0[2]<<">-<"<<c1[0]<<","<<c1[1]<<","<<c1[2]<<">";

auto outP = sofa::helper::getWriteOnlyAccessor(outputPoints);
auto outT = sofa::helper::getWriteOnlyAccessor(outputTetrahedra);
auto outP = sofa::helper::getWriteOnlyAccessor(d_outputPoints);
auto outT = sofa::helper::getWriteOnlyAccessor(d_outputTetrahedra);

outP.resize(gsize[0]*gsize[1]*gsize[2] + hsize[0]*hsize[1]*hsize[2]);

Expand Down Expand Up @@ -291,10 +305,10 @@ void MeshTetraStuffing::doUpdate()
if (pInside[p] > 0) insides.push_back(outP[p]);
}

if (bSnapPoints.getValue())
if (d_bSnapPoints.getValue())
{
const Real alphaLong = this->alphaLong.getValue();
const Real alphaShort = this->alphaShort.getValue();
const Real alphaLong = this->d_alphaLong.getValue();
const Real alphaShort = this->d_alphaShort.getValue();
vector<bool> pViolated;
pViolated.resize(nbp);
std::set<int> violatedInsidePoints;
Expand Down Expand Up @@ -455,7 +469,7 @@ void MeshTetraStuffing::doUpdate()
}

// Create cut points
if (bSplitTetrahedra.getValue())
if (d_bSplitTetrahedra.getValue())
{
for (int p=0; p<nbp; ++p)
{
Expand Down Expand Up @@ -654,7 +668,7 @@ void MeshTetraStuffing::addTetra(SeqTetrahedra& outT, SeqPoints& outP, int p1, i
if (in3 < 0) pneg[nneg++]=p3; else if (in3 > 0) ppos[npos++]=p3; else pzero[nzero++]=p3;
if (in4 < 0) pneg[nneg++]=p4; else if (in4 > 0) ppos[npos++]=p4; else pzero[nzero++]=p4;
if (npos == 0 && nneg > 0) return ; // no tetra
if (nneg == 0 || !bSplitTetrahedra.getValue()) // full tetra
if (nneg == 0 || !d_bSplitTetrahedra.getValue()) // full tetra
{
addFinalTetra(outT,outP, p1,p2,p3,p4, false,__LINE__);
}
Expand Down Expand Up @@ -722,7 +736,7 @@ void MeshTetraStuffing::addTetra(SeqTetrahedra& outT, SeqPoints& outP, int p1, i
const bool flip1 = flipDiag(outP, ppos[0],ppos[1],cut2,cut1,pneg[0]);
const bool flip2 = flipDiag(outP, ppos[1],ppos[2],cut3,cut2,pneg[0]);
bool flip3 = flipDiag(outP, ppos[2],ppos[0],cut1,cut3,pneg[0]);
if (flip1 == flip2 && flip2 == flip3)
if (flip1 == flip2 && flip2 == flip3)
{
msg_error() << "Invalid tetra split";
flip3 = !flip1;
Expand Down Expand Up @@ -908,10 +922,10 @@ MeshTetraStuffing::Point MeshTetraStuffing::getEdgeDir(int e)

void MeshTetraStuffing::draw(const core::visual::VisualParams* vparams)
{
if (!bDraw.getValue())
if (!d_bDraw.getValue())
return;

const SeqPoints& outP = outputPoints.getValue();
const SeqPoints& outP = d_outputPoints.getValue();

std::vector<type::Vec3> verticesP;
std::vector<type::Vec3> verticesIntersections;
Expand Down
Expand Up @@ -68,19 +68,58 @@ class SOFA_COMPONENT_ENGINE_GENERATE_API MeshTetraStuffing : public core::DataEn

void doUpdate() override;

Data< type::fixed_array<Point,2> > vbbox; ///< BBox to restrict the volume to
Data< Real > size; ///< Size of the generate tetrahedra. If negative, number of grid cells in the largest bbox dimension
Data<SeqPoints> inputPoints; ///< Input surface mesh points
Data<SeqTriangles> inputTriangles; ///< Input surface mesh triangles
Data<SeqQuads> inputQuads; ///< Input surface mesh quads
Data<SeqPoints> outputPoints; ///< Output volume mesh points
Data<SeqTetrahedra> outputTetrahedra; ///< Output volume mesh tetrahedra

Data< Real > alphaLong; ///< Minimum alpha values on long edges when snapping points
Data< Real > alphaShort; ///< Minimum alpha values on short edges when snapping points
Data< bool > bSnapPoints; ///< Snap points to the surface if intersections on edges are closed to given alpha values
Data< bool > bSplitTetrahedra; ///< Split tetrahedra crossing the surface
Data< bool > bDraw; ///< Activate rendering of internal datasets

SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
Data< type::fixed_array<Point,2> > vbbox;

SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
Data<SeqPoints> inputPoints;

SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
Data<SeqTriangles> inputTriangles;

SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
Data<SeqQuads> inputQuads;

SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
Data<SeqPoints> outputPoints;

SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
Data<SeqTetrahedra> outputTetrahedra;

SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
Data< Real > alphaLong;

SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
Data<Real> alphaShort;

SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
Data<bool> bSnapPoints;

SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
Data< bool > bSplitTetrahedra;

SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
Data< bool > bDraw;

SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
Data< Real > size;



Data< type::fixed_array<Point,2> > d_vbbox; ///< BBox to restrict the volume to
Data< Real > d_size; ///< Size of the generate tetrahedra. If negative, number of grid cells in the largest bbox dimension
Data<SeqPoints> d_inputPoints; ///< Input surface mesh points
Data<SeqTriangles> d_inputTriangles; ///< Input surface mesh triangles
Data<SeqQuads> d_inputQuads; ///< Input surface mesh quads
Data<SeqPoints> d_outputPoints; ///< Output volume mesh points
Data<SeqTetrahedra> d_outputTetrahedra; ///< Output volume mesh tetrahedra

Data< Real > d_alphaLong; ///< Minimum alpha values on long edges when snapping points
Data< Real > d_alphaShort; ///< Minimum alpha values on short edges when snapping points
Data< bool > d_bSnapPoints; ///< Snap points to the surface if intersections on edges are closed to given alpha values
Data< bool > d_bSplitTetrahedra; ///< Split tetrahedra crossing the surface
Data< bool > d_bDraw; ///< Activate rendering of internal datasets

Real cellsize;
int gsize[3];
Expand Down
Expand Up @@ -36,3 +36,12 @@ namespace sofa::component::engine::generate
constexpr const char* MODULE_NAME = "@PROJECT_NAME@";
constexpr const char* MODULE_VERSION = "@PROJECT_VERSION@";
} // namespace sofa::component::engine::generate

#ifdef SOFA_BUILD_SOFA_COMPONENT_ENGINE_GENERATE
#define SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA()
#else
#define SOFA_ATTRIBUTE_DEPRECATED__RENAME_DATA() \
SOFA_ATTRIBUTE_DEPRECATED( \
"v24.06", "v24.12", \
"Data renamed according to the guidelines")
#endif

0 comments on commit 8cb5496

Please sign in to comment.