// All content (c) Shaun Reed 2021, all rights reserved #include "ToggleLight.h" #include "Components/PointLightComponent.h" #include "Components/SphereComponent.h" // Sets default values AToggleLight::AToggleLight() { // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; DesiredIntensity = 3000.0f; PointLight1 = CreateDefaultSubobject(TEXT("PointLight1")); PointLight1->Intensity = DesiredIntensity; // PointLight1->bVisible = true; RootComponent = PointLight1; Sphere1 = CreateDefaultSubobject(TEXT("Sphere1")); Sphere1->InitSphereRadius(Radius); Sphere1->SetupAttachment(RootComponent); Sphere1->OnComponentBeginOverlap.AddDynamic(this, &AToggleLight::OnOverlapBegin); // set up a notification for when this component overlaps something Sphere1->OnComponentEndOverlap.AddDynamic(this, &AToggleLight::OnOverlapEnd); // set up a notification for when this component overlaps something } void AToggleLight::OnOverlapBegin_Implementation(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) { if (OtherActor && (OtherActor != this) && OtherComp) { ToggleLight(); } } void AToggleLight::OnOverlapEnd_Implementation(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex) { if (OtherActor && (OtherActor != this) && OtherComp) { ToggleLight(); } } void AToggleLight::ToggleLight() { PointLight1->ToggleVisibility(); } void AToggleLight::Tick(float DeltaTime) { if (Radius != Sphere1->GetUnscaledSphereRadius()) { Sphere1->SetSphereRadius(Radius); } }