Without any other code defined other than a AOSSMatineeActor which subclasses AMatineeActor and has the proper boiler plate, everything is compiling fine, but upon linking time, I’m getting errors like the following.
#pragma once
#include "OSSEventInterface.h"
#include "Matinee/MatineeActor.h"
#include "OSSMatineeActor.generated.h"
/**
OSS Custom implementation of MatineeActor
*/
UCLASS(MinimalAPI, NotBlueprintable, config = Game)
class AOSSMatineeActor : public AMatineeActor
{
GENERATED_UCLASS_BODY()
public:
};
I’d like to know how this is properly done. Is this as simple as adding Matinee/AMatineeActor.h to the public Engine.h? Or is this all a red herring? Is it madness to try to subclass AMatineeActor?
AMatineeActor has the “MinimalAPI” flag which supposedly means that it is not possible to call functions or access variables. Only functions with the “ENGINE_API” in front can be accessed.
It’s a bummer. Trying to subclass MatineeActor myself. Setting the MatineeData and manipulating the GroupActorInfos (or the actors controlled by the groups) seems impossible from C++ :/.
You can modify the class to be ENGINE_API by declaring it as such. I am currently using a custom matinee actor using this method.
According to the UE4 documentation, MinimalAPI is only used to decrease compile time, so if you strip the MinimalAPI specifier and declare the class as ENGINE_API you can inherit from it as normal.
Once the class is declared ENGINE_API you need to remove that namespace for all of the class functions which are using it as they are redundant. Then you’re good to go.
The rational is to hold the size of the exposed stuff low, this will lower compile times and generated code size. You can always use a source build and adapt it to your needs.