Hi, i am new to c++ in unreal engine and i was trying this example CPP Only Example | Unreal Engine 5.1 Documentation but it gives me compile errors on the AddDynamic.
my engine version is 4.9.2
#pragma once
#include "GameFramework/Actor.h"
#include "Overlap.generated.h"
UCLASS()
class BATTERYGAME_API AOverlap : public AActor
{
GENERATED_BODY()
public:
/** point light component */
UPROPERTY(VisibleAnywhere, Category = "Switch Components")
class UPointLightComponent* PointLight1;
/** sphere component */
UPROPERTY(VisibleAnywhere, Category = "Switch Components")
class USphereComponent* Sphere1;
AOverlap();
/** called when something enters the sphere component */
UFUNCTION()
void OnOverlapBegin(class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);
/** called when something leaves the sphere component */
UFUNCTION()
void OnOverlapEnd(class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex);
/** Toggles the light component's visibility*/
UFUNCTION()
void ToggleLight();
/** the desired intensity for the light */
UPROPERTY(VisibleAnywhere, Category = "Switch Variables")
float DesiredIntensity;
};
#include "BatteryGame.h"
#include "Overlap.h"
AOverlap::AOverlap()
{
DesiredIntensity = 3000.0f;
PointLight1 = CreateDefaultSubobject<UPointLightComponent>(TEXT("PointLight1"));
PointLight1->Intensity = DesiredIntensity;
PointLight1->bVisible = true;
RootComponent = PointLight1;
Sphere1 = CreateDefaultSubobject<USphereComponent>(TEXT("Sphere1"));
Sphere1->InitSphereRadius(250.0f);
Sphere1->AttachParent = RootComponent;
Sphere1->OnComponentBeginOverlap.AddDynamic(this, &AOverlap::OnOverlap); // set up a notification for when this component overlaps something
Sphere1->OnComponentEndOverlap.AddDynamic(this, &AOverlap::OnOverlap); // set up a notification for when this component overlaps something
}
void AOverlap::OnOverlapBegin(class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
if (OtherActor && (OtherActor != this) && OtherComp)
{
ToggleLight();
}
}
void AOverlap::OnOverlapEnd(class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)
{
if (OtherActor && (OtherActor != this) && OtherComp)
{
ToggleLight();
}
}
void AOverlap::ToggleLight()
{
PointLight1->ToggleVisibility();
}