The new design of engine supports plugins for render systems, image loaders, components, Editor plugins and other subsystems.
The plugins reduce compile time and makes the engine more flexible and allows other programmers to write plugins for the engine.
Design
PluginManager loads the plugins and call the RegisterPlugin function from dll/so file and pass PluginManager* as parameter so the plugin can register itself with PluginManager.
void registerPlugin(PluginManager &PM);
The Plugin class has an interface for creating the plugin class. Building a Better Plugin Architecture
template
Resources
How do I load a shared object in C++?
dlopen(3) – Linux man page