From ddf783dbbe27956118320b72c3e72258b40378ed Mon Sep 17 00:00:00 2001 From: Frederick Roy Date: Mon, 2 Sep 2024 10:27:14 +0900 Subject: [PATCH] apply new register mechanism to playback --- .../sofa/component/playback/CompareState.cpp | 9 ++++--- .../component/playback/CompareTopology.cpp | 9 ++++--- .../component/playback/InputEventReader.cpp | 8 +++--- .../src/sofa/component/playback/ReadState.cpp | 7 +++-- .../sofa/component/playback/ReadTopology.cpp | 7 +++-- .../sofa/component/playback/WriteState.cpp | 8 +++--- .../sofa/component/playback/WriteTopology.cpp | 11 ++++---- .../src/sofa/component/playback/init.cpp | 27 ++++++++++++++++++- Sofa/Component/src/sofa/component/init.cpp | 1 + 9 files changed, 62 insertions(+), 25 deletions(-) diff --git a/Sofa/Component/Playback/src/sofa/component/playback/CompareState.cpp b/Sofa/Component/Playback/src/sofa/component/playback/CompareState.cpp index 026ba363c75..cff6913810e 100644 --- a/Sofa/Component/Playback/src/sofa/component/playback/CompareState.cpp +++ b/Sofa/Component/Playback/src/sofa/component/playback/CompareState.cpp @@ -98,10 +98,11 @@ std::string lookForValidCompareStateFile( const std::string& sceneName, } - - -int CompareStateClass = core::RegisterObject("Compare State vectors from a reference frame to the associated Mechanical State") - .add< CompareState >(); +void registerCompareState(sofa::core::ObjectFactory* factory) +{ + factory->registerObjects(core::ObjectRegistrationData("Compare State vectors from a reference frame to the associated Mechanical State.") + .add< CompareState >()); +} CompareState::CompareState(): ReadState() { diff --git a/Sofa/Component/Playback/src/sofa/component/playback/CompareTopology.cpp b/Sofa/Component/Playback/src/sofa/component/playback/CompareTopology.cpp index e36f366a7d2..18e8ffbf6a4 100644 --- a/Sofa/Component/Playback/src/sofa/component/playback/CompareTopology.cpp +++ b/Sofa/Component/Playback/src/sofa/component/playback/CompareTopology.cpp @@ -31,10 +31,11 @@ namespace sofa::component::playback { - - -int CompareTopologyClass = core::RegisterObject("Compare Topology containers from a reference frame to the associated Topology") - .add< CompareTopology >(); +void registerCompareTopology(sofa::core::ObjectFactory* factory) +{ + factory->registerObjects(core::ObjectRegistrationData("Compare Topology containers from a reference frame to the associated Topology.") + .add< CompareTopology >()); +} CompareTopology::CompareTopology(): ReadTopology() { diff --git a/Sofa/Component/Playback/src/sofa/component/playback/InputEventReader.cpp b/Sofa/Component/Playback/src/sofa/component/playback/InputEventReader.cpp index 126a5c20fa7..330aaf600d4 100644 --- a/Sofa/Component/Playback/src/sofa/component/playback/InputEventReader.cpp +++ b/Sofa/Component/Playback/src/sofa/component/playback/InputEventReader.cpp @@ -33,9 +33,11 @@ namespace sofa::component::playback { -// Register in the Factory -int InputEventReaderClass = core::RegisterObject("Read events from file") - .add< InputEventReader >(); +void registerInputEventReader(sofa::core::ObjectFactory* factory) +{ + factory->registerObjects(core::ObjectRegistrationData("Read events from file.") + .add< InputEventReader >()); +} InputEventReader::InputEventReader() : d_filename(initData(&d_filename, std::string("/dev/input/mouse2"), "filename", "input events file name")) diff --git a/Sofa/Component/Playback/src/sofa/component/playback/ReadState.cpp b/Sofa/Component/Playback/src/sofa/component/playback/ReadState.cpp index b433e6f6c82..506d62175f1 100644 --- a/Sofa/Component/Playback/src/sofa/component/playback/ReadState.cpp +++ b/Sofa/Component/Playback/src/sofa/component/playback/ReadState.cpp @@ -29,8 +29,11 @@ namespace sofa::component::playback using namespace defaulttype; -int ReadStateClass = core::RegisterObject("Read State vectors from file at each timestep") - .add< ReadState >(); +void registerReadState(sofa::core::ObjectFactory* factory) +{ + factory->registerObjects(core::ObjectRegistrationData("Read State vectors from file at each timestep.") + .add< ReadState >()); +} ReadStateCreator::ReadStateCreator(const core::ExecParams* params) : Visitor(params) diff --git a/Sofa/Component/Playback/src/sofa/component/playback/ReadTopology.cpp b/Sofa/Component/Playback/src/sofa/component/playback/ReadTopology.cpp index ffbe3bcd15c..0939d67140f 100644 --- a/Sofa/Component/Playback/src/sofa/component/playback/ReadTopology.cpp +++ b/Sofa/Component/Playback/src/sofa/component/playback/ReadTopology.cpp @@ -28,8 +28,11 @@ namespace sofa::component::playback using namespace defaulttype; -int ReadTopologyClass = core::RegisterObject("Read topology containers informations from file at each timestep") - .add< ReadTopology >(); +void registerReadTopology(sofa::core::ObjectFactory* factory) +{ + factory->registerObjects(core::ObjectRegistrationData("Read topology containers informations from file at each timestep.") + .add< ReadTopology >()); +} ReadTopologyCreator::ReadTopologyCreator(const core::ExecParams* params) :Visitor(params) diff --git a/Sofa/Component/Playback/src/sofa/component/playback/WriteState.cpp b/Sofa/Component/Playback/src/sofa/component/playback/WriteState.cpp index e603e4d224a..f4b1951f44f 100644 --- a/Sofa/Component/Playback/src/sofa/component/playback/WriteState.cpp +++ b/Sofa/Component/Playback/src/sofa/component/playback/WriteState.cpp @@ -29,9 +29,11 @@ namespace sofa::component::playback using namespace defaulttype; - -int WriteStateClass = core::RegisterObject("Write State vectors to file at each timestep") - .add< WriteState >(); +void registerWriteState(sofa::core::ObjectFactory* factory) +{ + factory->registerObjects(core::ObjectRegistrationData("Write State vectors to file at each timestep.") + .add< WriteState >()); +} WriteStateCreator::WriteStateCreator(const core::ExecParams* params) :simulation::Visitor(params) diff --git a/Sofa/Component/Playback/src/sofa/component/playback/WriteTopology.cpp b/Sofa/Component/Playback/src/sofa/component/playback/WriteTopology.cpp index b859a09abc9..b2d92a8c12b 100644 --- a/Sofa/Component/Playback/src/sofa/component/playback/WriteTopology.cpp +++ b/Sofa/Component/Playback/src/sofa/component/playback/WriteTopology.cpp @@ -29,12 +29,11 @@ namespace sofa::component::playback using namespace defaulttype; - - -int WriteTopologyClass = core::RegisterObject("Write topology containers informations to file at each timestep") - .add< WriteTopology >(); - - +void registerWriteTopology(sofa::core::ObjectFactory* factory) +{ + factory->registerObjects(core::ObjectRegistrationData("Write topology containers informations to file at each timestep.") + .add< WriteTopology >()); +} WriteTopologyCreator::WriteTopologyCreator(const core::ExecParams* params) :Visitor(params) diff --git a/Sofa/Component/Playback/src/sofa/component/playback/init.cpp b/Sofa/Component/Playback/src/sofa/component/playback/init.cpp index cafc48306f1..8fcf9c2adee 100644 --- a/Sofa/Component/Playback/src/sofa/component/playback/init.cpp +++ b/Sofa/Component/Playback/src/sofa/component/playback/init.cpp @@ -21,13 +21,24 @@ ******************************************************************************/ #include #include +#include + namespace sofa::component::playback { - + +extern void registerCompareState(sofa::core::ObjectFactory* factory); +extern void registerCompareTopology(sofa::core::ObjectFactory* factory); +extern void registerInputEventReader(sofa::core::ObjectFactory* factory); +extern void registerReadState(sofa::core::ObjectFactory* factory); +extern void registerReadTopology(sofa::core::ObjectFactory* factory); +extern void registerWriteState(sofa::core::ObjectFactory* factory); +extern void registerWriteTopology(sofa::core::ObjectFactory* factory); + extern "C" { SOFA_EXPORT_DYNAMIC_LIBRARY void initExternalModule(); SOFA_EXPORT_DYNAMIC_LIBRARY const char* getModuleName(); SOFA_EXPORT_DYNAMIC_LIBRARY const char* getModuleVersion(); + SOFA_EXPORT_DYNAMIC_LIBRARY void registerObjects(sofa::core::ObjectFactory* factory); } void initExternalModule() @@ -45,11 +56,25 @@ const char* getModuleVersion() return MODULE_VERSION; } +void registerObjects(sofa::core::ObjectFactory* factory) +{ + registerCompareState(factory); + registerCompareTopology(factory); + registerInputEventReader(factory); + registerReadState(factory); + registerReadTopology(factory); + registerWriteState(factory); + registerWriteTopology(factory); +} + void init() { static bool first = true; if (first) { + // make sure that this plugin is registered into the PluginManager + sofa::helper::system::PluginManager::getInstance().registerPlugin(MODULE_NAME); + first = false; } } diff --git a/Sofa/Component/src/sofa/component/init.cpp b/Sofa/Component/src/sofa/component/init.cpp index b037b4eea72..441d5d57507 100644 --- a/Sofa/Component/src/sofa/component/init.cpp +++ b/Sofa/Component/src/sofa/component/init.cpp @@ -77,6 +77,7 @@ void registerObjects(sofa::core::ObjectFactory* factory) factory->registerObjectsFromPlugin("Sofa.Component.StateContainer"); factory->registerObjectsFromPlugin("Sofa.Component.Setting"); factory->registerObjectsFromPlugin("Sofa.Component.Visual"); + factory->registerObjectsFromPlugin("Sofa.Component.Playback"); } void init()