@gmpreussner said “We generally discourage the adding of hard dependencies to plug-ins, because for plug-ins to be truly pluggable, the application consuming those plug-ins shouldn’t have to know about what those plug-ins are.”
This seems like completely ridiculous advice.
If you have a plugin, it’s not an abstract interface with multiple pluggable backends. It’s a component of functionality that is not available otherwise.
The ‘CustomMeshComponent’ is not an implementation of an ICustomMesh; it builds custom meshes. Nothing else provides this functionality. If you want the functionality, having a ‘hard’ dependency on this plugin is your only option.
@gmpreussner also said; " If you need access to this module from another module, then it should not be a plug-in. "
That doesn’t make any sense either. ‘Plugins’ are modular components you can add to a project. They can implement an interface, and you can have a plugin implementation that binds to a specific interface, but you don’t have to. In fact, the majority of the plugins and module are not designed that way; only some of them are.
tldr;
Yes, if you want to use the CustomMeshComponent, add ‘CustomMeshComponent’ to your PrivateDependencyModuleNames.