I’m trying to create an instance of UInstancedStaticMeshComponent as seen in many topics online. But the same code that works for others is not working for me.This is what I have so far, a super simple class:
MyActor.h:
class FPSTEST2_API MyActor : public AActor
{
GENERATED_BODY()
UPROPERTY(VisibleDefaultsOnly, Category=Mesh)
class UInstancedStaticMeshComponent* InstancedMesh;
public:
// Sets default values for this actor's properties
MyActor();
// Called when the game starts or when spawned
virtual void BeginPlay() override;
// Called every frame
virtual void Tick( float DeltaSeconds ) override;
};
MyActor.cpp (constructor only):
MyActor::MyActor()
{
PrimaryActorTick.bCanEverTick = true;
InstancedMesh = CreateDefaultSubobject<UInstancedStaticMeshComponent>(TEXT("Test")); // The problem is here
}
The compiler throws me this error: “use of undefined type ‘UInstancedStaticMeshComponent’” in the definition of CreateDefaultSubobject:
template<class TReturnType>
TReturnType* CreateDefaultSubobject(FName SubobjectName, bool bTransient = false)
{
UClass* ReturnType = TReturnType::StaticClass(); // This is where the error pops up
return static_cast<TReturnType*>(CreateDefaultSubobject(SubobjectName, ReturnType, ReturnType, /*bIsRequired =*/ true, /*bIsAbstract =*/ false, bTransient));
}
I can’t find the solution anywhere. I’ve seen this code in plenty of pages and it should work…