From 48bb8f9ef6eb15c742154e28a84fffd5212fe3ba Mon Sep 17 00:00:00 2001 From: baz Date: Wed, 13 Dec 2023 21:45:05 +0000 Subject: [PATCH] Create LevelEndTriggerVolume --- Source/Nakatomi/LevelEndTriggerVolume.cpp | 38 +++++++++++++++++++++++ Source/Nakatomi/LevelEndTriggerVolume.h | 30 ++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 Source/Nakatomi/LevelEndTriggerVolume.cpp create mode 100644 Source/Nakatomi/LevelEndTriggerVolume.h diff --git a/Source/Nakatomi/LevelEndTriggerVolume.cpp b/Source/Nakatomi/LevelEndTriggerVolume.cpp new file mode 100644 index 0000000..184765c --- /dev/null +++ b/Source/Nakatomi/LevelEndTriggerVolume.cpp @@ -0,0 +1,38 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "LevelEndTriggerVolume.h" + +#include + +#include "PlayerCharacter.h" + +void ALevelEndTriggerVolume::BeginPlay() +{ + Super::BeginPlay(); + // OnActorBeginOverlap.AddDynamic(this, &ALevelEndTriggerVolume::OnOverlapBegin); + +} + +ALevelEndTriggerVolume::ALevelEndTriggerVolume() +{ + GetCollisionComponent()->OnComponentBeginOverlap.AddDynamic(this, &ALevelEndTriggerVolume::OnOverlapBegin); +} + +void ALevelEndTriggerVolume::OnOverlapBegin(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, + UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, + const FHitResult& SweepResult) +{ + // TODO: Add extra functionality! + if (Cast(OtherActor)) + { + GetCollisionComponent()->OnComponentBeginOverlap.Clear(); + + if (!NextGameLevel.IsNull()) + { + UGameplayStatics::OpenLevelBySoftObjectPtr(GetWorld(), NextGameLevel); + } + + this->Destroy(); + } +} diff --git a/Source/Nakatomi/LevelEndTriggerVolume.h b/Source/Nakatomi/LevelEndTriggerVolume.h new file mode 100644 index 0000000..2c44cba --- /dev/null +++ b/Source/Nakatomi/LevelEndTriggerVolume.h @@ -0,0 +1,30 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Engine/TriggerBox.h" +#include "LevelEndTriggerVolume.generated.h" + +/** + * + */ +UCLASS() +class NAKATOMI_API ALevelEndTriggerVolume : public ATriggerBox +{ + GENERATED_BODY() + +protected: + virtual void BeginPlay() override; + +public: + ALevelEndTriggerVolume(); + + UFUNCTION() + void OnOverlapBegin(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, + UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, + const FHitResult& SweepResult); + + UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) + TSoftObjectPtr NextGameLevel; +};