Similar to this tutorial which creates a custom class that extends the MoviePipelinePythonHostExecutor
:
@unreal.uclass()
class MoviePipelineMyCustomEditorRenderExecutor (unreal.MoviePipelinePythonHostExecutor):
@unreal.ufunction(override=True)
def execute_delayed(self, dummy_queue_ignore):
...
I want to create a custom class that extends MoviePipelineVideoOutputBase
like this in UE5.2:
@unreal.uclass()
class MoviePipelineMyCustomVideoOutput(unreal.MoviePipelineVideoOutputBase):
@unreal.ufunction(override=True)
def is_audio_supported(self):
return False
# ...
Unfortunately I can’t get past even implementing this super simple is_audio_supported
function:
Exception: generate_class: Failed to generate an Unreal class for the Python type 'MoviePipelineMyCustomVideoOutput'
Exception: MoviePipelineMyCustomVideoOutput: Method 'is_audio_supported' was set to 'override', but no method was found to override
If I remove the function or the @unreal.ufunction
annotation it complains that its not implemented (which makes sense):
LowLevelFatalError [File:../Plugins/MovieScene/MovieRenderPipeline/Source/MovieRenderPipelineCore/Public/MoviePipelineVideoOutputBase.h] [Line: 87]
Pure virtual not implemented (UMoviePipelineVideoOutputBase::IsAudioSupported)
But no matter what I try to put into @unreal.ufunction(...)
nothing works. I tried all combinations of static
, getter
, pure
, virtual
, override
that I can think off and nothing works.
I am now trying to instead implement it C++, but I would prefer to use python. Any help is appreciated.
Links:
- https://github.com/EpicGames/UnrealEngine/blob/5.2/Engine/Plugins/MovieScene/MovieRenderPipeline/Source/MovieRenderPipelineCore/Public/MoviePipelineVideoOutputBase.h#L87
- https://github.com/EpicGames/UnrealEngine/blob/5.2/Engine/Plugins/Media/AppleProResMedia/Source/AppleProResMedia/Private/MoviePipelineAppleProResOutput.h#L34
- unreal.MoviePipelineVideoOutputBase — Unreal Python 5.0 (Experimental) documentation (for some reason this is missing from the 5.2 docs)