Thanks for the suggested approach. We attempted to implement it using native subclasses, but encountered linker errors with Unreal Engine 5.8.0, CL 55116800, on Windows.
UMetaHumanCrowdPipeline is declared with MinimalAPI. Our derived class compiled successfully, but linking failed because the base constructor and several virtual method implementations are not exported from UnrealEditor-MetaHumanCrowd.dll.
Representative unresolved symbols were:
UMetaHumanCrowdPipeline::UMetaHumanCrowdPipeline()
UMetaHumanCrowdPipeline::SetDefaultEditorPipeline()
UMetaHumanCrowdPipeline::AssembleCollection(...)
UMetaHumanCrowdPipeline::AreSlotSelectionsAllowed(...)
UMetaHumanCrowdPipeline::GetActorClass()
Inspecting the DLL exports showed the generated UClass symbols and explicitly exported static slot names, but not the constructor or virtual implementations required by a subclass.
UMetaHumanCrowdEditorPipeline appears to have the same issue. It is declared without METAHUMANCROWDEDITOR_API or MinimalAPI, and its constructor and implementation symbols are not exported from UnrealEditor-MetaHumanCrowdEditor.dll.
Would both classes need to be exported for the recommended subclass approach to work from a project module? For example, should UMetaHumanCrowdPipeline use METAHUMANCROWD_API and UMetaHumanCrowdEditorPipeline use METAHUMANCROWDEDITOR_API?
There is also a wiring question. UMetaHumanCrowdPipeline::EditorPipeline is private, and SetDefaultEditorPipeline() instantiates the standard editor pipeline using the hardcoded class path /Script/MetaHumanCrowdEditor.MetaHumanCrowdEditorPipeline.
How is the custom editor pipeline subclass intended to be associated with the custom runtime pipeline subclass? Should it be assigned manually to the instanced EditorPipeline property, or should the runtime subclass override the editor pipeline accessors?
As a project-only workaround, we currently add the same runtime and editor slot definitions to the existing collection pipeline specifications when those pipeline objects are constructed. This works, but we would be eager to understand what the intended workflow is.
[Attachment Removed]