From d43d032b4a5e3960fbe50774b1eea8cc09c2d0c4 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Wed, 12 Jan 2022 23:10:44 -0500 Subject: [PATCH] Add ToggleLight class to trigger lights in radius + Followed UE4 tutoial on mixing C++ and Blueprints + https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/ClassCreation/CodeAndBlueprints/ + Added an in-editor and blueprint field ToggleLight::Radius to adjust trigger radius + Made stairs light up as you walk up them --- .../MyAssets/Blueprints/Bp_ToggleLight.uasset | Bin 0 -> 62522 bytes .../Maps/ThirdPersonExampleMap.umap | Bin 8545180 -> 8551494 bytes .../ThirdPersonExampleMap_BuiltData.uasset | Bin 4086513 -> 4086513 bytes Source/ThirdPerson/Private/ToggleLight.cpp | 59 ++++++++++++++++++ Source/ThirdPerson/Public/ToggleLight.h | 53 ++++++++++++++++ 5 files changed, 112 insertions(+) create mode 100644 Content/MyAssets/Blueprints/Bp_ToggleLight.uasset create mode 100644 Source/ThirdPerson/Private/ToggleLight.cpp create mode 100644 Source/ThirdPerson/Public/ToggleLight.h diff --git a/Content/MyAssets/Blueprints/Bp_ToggleLight.uasset b/Content/MyAssets/Blueprints/Bp_ToggleLight.uasset new file mode 100644 index 0000000000000000000000000000000000000000..1b091b8c35655353156acbb2e8feab633708cabf GIT binary patch literal 62522 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 c;}+ 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 a&?2D4KudtG0`dV>0xf-X^~hxn68|423id(( delta 39470 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 y%rVabi_}h9qTyn)Vjk^?^=k5pku{wzW delta 280 zcmWl|w+;bu0Knm#?tjYZ?Kr*n-luyB&tou2NbKH0A||uR0~k%_n}o^Fmwd+gBN^O% zm7D%JT;-#_SKr(FQ#-ANv=P$3iDp`8rHytv=%k=b7v1#GONBoA8DNkhh8ba$F~*so z$|O_Nm}Z7q=9p)JMV44*g;myAXM;_)*k*@a_SoluLykD+gj3Eq=i(xy(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); + } + +} + diff --git a/Source/ThirdPerson/Public/ToggleLight.h b/Source/ThirdPerson/Public/ToggleLight.h new file mode 100644 index 0000000..b43c91d --- /dev/null +++ b/Source/ThirdPerson/Public/ToggleLight.h @@ -0,0 +1,53 @@ +// All content (c) Shaun Reed 2021, all rights reserved + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "ToggleLight.generated.h" + +UCLASS() +class THIRDPERSON_API AToggleLight : public AActor +{ + GENERATED_BODY() + +public: + // Sets default values for this actor's properties + AToggleLight(); + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Switch Components") + class UPointLightComponent* PointLight1; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Switch Components") + class USphereComponent* Sphere1; + + // Radius of the trigger to toggle the light + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Switch Variables") + float Radius = 50.0f; + + /** the desired intensity for the light */ + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Switch Variables") + float DesiredIntensity; + + /** Toggles the light component's visibility*/ + UFUNCTION() + void ToggleLight(); + + // + // Trigger functions + + /** called when something enters the sphere component */ + UFUNCTION(BlueprintNativeEvent, Category = "Switch Functions") + void OnOverlapBegin(class UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult); + void OnOverlapBegin_Implementation(class UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult); + + /** called when something leaves the sphere component */ + UFUNCTION(BlueprintNativeEvent, Category = "Switch Functions") + void OnOverlapEnd(class UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex); + void OnOverlapEnd_Implementation(class UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex); + + // + // Update functions + + virtual void Tick(float DeltaTime) override; +};