Why do we need to implement GetSupportsPostRenderActions_Implementation to build in 5.8?

Creating a custom UMoviePipelinePIEExecutor seems to cause compile errors for 5.8 unless you implement GetSupportsPostRenderActions_Implementation. However, this won’t exist in previous versions so we cannot compile the plugin for older versions. Why is this a requirement? Is there a way to handle this for 5.7 and previous versions?

[Attachment Removed]

Steps to Reproduce
Try to create a custom UMoviePipelinePIEExecutor and compile for 5.8.

[Attachment Removed]

Hey Christopher,

Yeah, you stumbled across a bug surrounding C++ exports. Is your executor Python-based?

[Attachment Removed]

It is not, this is a C++ custom executor, though it is essentially just subclassing the PIE executor:

Header:

class UMyCustomPIEExecutor : public UMoviePipelinePIEExecutor
 
...
 
protected:
 
	// Override to bypass unexported base class linker error
 
	virtual bool GetSupportsPostRenderActions_Implementation() override;
 
...
 

CPP:

bool UMyCustomPIEExecutor::GetSupportsPostRenderActions_Implementation()
{
	// Return false (or true, depending on if your custom executor actually 
	// runs post-render scripts). Do NOT call Super here!
	return false;
}

It seems this must be implemented in order to compile now in 5.8

[Attachment Removed]

Ok you should be able to fix the problem and have the source compatible with 5.7 with something like this. Returning true matches the PIE executor behavior if you’re inheriting from that.

#include "Misc/EngineVersionComparison.h"
 
#if UE_VERSION_NEWER_THAN_OR_EQUAL(5, 8, 0)
virtual bool GetSupportsPostRenderActions_Implementation() override
{
	return true; // return true/false here depending on the executor's post-render capabilities
}
#endif

[Attachment Removed]