Update the plugin interface to accommodate the publishing of FPV and AXF nodes
This MR is the companion of MR GeoModelDev/GeoModel!8 (merged) , and must be built, in fact, on top of the latter.
This MR updates the plugins to follow the changes introduced in GeoModel to let users (subsystems, in particular) publish list of FullPhysVol and AlignableTransform nodes.
In particular:
- The
GeoVGeometryPluginclass now features an additional constructor, which takes astd::stringas an argument, to set the plugin's name. The parameterized constructor also creates aunique_ptrto an instance ofGeoModelKernel/GeoPublisher. - The
GeoVGeometryPluginplugin owns theunique_ptras a private class member and it returns raw pointers to that by mean of thegetPublisher()method. Classes that derive fromGeoVGeometryPluginwill use thegetPublishermethod to get the raw pointer. - Simple plugins that do not have to publish nodes can use the default
GeoVGeometryPlugin()constructor. The plugins that wish to publish nodes can use the parameterized constructor, then implement the publishing code in thecreate()method. - The plugin's method
create(GeoVPhysVol*, bool)now accepts an optional boolean argument to trigger/enable the publishing of GeoModel nodes by the plugin. Applications using the plugin can trigger the publishing by passing atrueto thecreate(...)method; then they can get the publisher pointer by calling the plugin'sgetPublisher()method.
Edited by Riccardo Maria Bianchi