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
GeoVGeometryPlugin
class now features an additional constructor, which takes astd::string
as an argument, to set the plugin's name. The parameterized constructor also creates aunique_ptr
to an instance ofGeoModelKernel/GeoPublisher
. - The
GeoVGeometryPlugin
plugin owns theunique_ptr
as a private class member and it returns raw pointers to that by mean of thegetPublisher()
method. Classes that derive fromGeoVGeometryPlugin
will use thegetPublisher
method 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 atrue
to thecreate(...)
method; then they can get the publisher pointer by calling the plugin'sgetPublisher()
method.
Edited by Riccardo Maria Bianchi