From dec1d761bf498c4a32b46bba1e20734b721d3bb2 Mon Sep 17 00:00:00 2001 From: Rafal Swierczek <34179rs@gmail.com> Date: Wed, 18 Oct 2023 00:02:16 +0100 Subject: [PATCH] Replaced Interactable Actor Class with Interaction Interface --- .../Blueprints/BP_FirstPersonCharacter.uasset | 4 +-- .../Architecture/Floor_400x400.uasset | 4 +-- .../HDRI/HDRI_Epic_Courtyard_Daylight.uasset | 4 +-- .../BountySystem/BountyDirector.h | 4 +-- .../EndlessVendettaCharacter.cpp | 8 ++--- .../EndlessVendetta/InteractableActor.cpp | 33 ------------------- .../EndlessVendetta/InteractableActor.h | 26 --------------- .../EndlessVendetta/InteractionInterface.cpp | 6 ++++ .../EndlessVendetta/InteractionInterface.h | 26 +++++++++++++++ 9 files changed, 43 insertions(+), 72 deletions(-) delete mode 100644 EndlessVendetta/Source/EndlessVendetta/InteractableActor.cpp delete mode 100644 EndlessVendetta/Source/EndlessVendetta/InteractableActor.h create mode 100644 EndlessVendetta/Source/EndlessVendetta/InteractionInterface.cpp create mode 100644 EndlessVendetta/Source/EndlessVendetta/InteractionInterface.h diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset index 9b6693d3..f851630e 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe0a5a1725c7cd65051a510027a14301f6b776fe1a1935d0fb55558f829ee90b -size 42620 +oid sha256:fb7eb23a18c0ad9f5cf37ae72d45bac1d1b1d90fac9281cfa3e3233b9b6a3d44 +size 42950 diff --git a/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset b/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset index 2c9809cc..c2a34afc 100644 --- a/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset +++ b/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:98e416dff362313306ffaf6a91d7104bef732f215b22e801e4005260f28e7d36 -size 14831 +oid sha256:4c0ecf0ac0702cc2bd355ec050232a61c49e10f102448efbeb735a51824adef6 +size 14948 diff --git a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset index 0f990580..dbd0ea66 100644 --- a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset +++ b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc35eb2d43a47427d30aba0196f9eac90d089dd3abca319528c5d25c83510d0d -size 72364642 +oid sha256:fd9c0b90f58f0b317de5aa6a0402935fb88c73e4f74ec14c651ccfcf282feb81 +size 66790690 diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.h index 41fc840c..5c3a9719 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.h +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.h @@ -6,13 +6,13 @@ #include "MainBountyClass.h" #include "SideBountyClass.h" #include "EndlessVendetta/EndlessVendettaCharacter.h" -#include "EndlessVendetta/InteractableActor.h" +#include "EndlessVendetta/InteractionInterface.h" #include "EndlessVendetta/UserWidgets/PC_Display.h" #include "GameFramework/Actor.h" #include "BountyDirector.generated.h" UCLASS() -class ENDLESSVENDETTA_API ABountyDirector : public AInteractableActor +class ENDLESSVENDETTA_API ABountyDirector : public AActor, public IInteractionInterface { GENERATED_BODY() diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp index 4a1bd405..bca0966d 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp @@ -6,7 +6,7 @@ #include "Components/CapsuleComponent.h" #include "EnhancedInputComponent.h" #include "EnhancedInputSubsystems.h" -#include "InteractableActor.h" +#include "InteractionInterface.h" #include "AI/EnemyCharacter.h" #include "GameFramework/CharacterMovementComponent.h" #include "Kismet/GameplayStatics.h" @@ -124,10 +124,8 @@ void AEndlessVendettaCharacter::Interact() if (!GetWorld()->LineTraceSingleByChannel(OutHit, LT_Start, LT_End, ECC_Camera, QueryParams)) return; AActor* HitActor = OutHit.GetActor(); - AInteractableActor* InteractableActor = Cast(HitActor); - if (!IsValid(InteractableActor)) return; - - InteractableActor->Interact(); + IInteractionInterface* InteractableActor = Cast(HitActor); + if (InteractableActor) InteractableActor->Interact(); } diff --git a/EndlessVendetta/Source/EndlessVendetta/InteractableActor.cpp b/EndlessVendetta/Source/EndlessVendetta/InteractableActor.cpp deleted file mode 100644 index 346e151d..00000000 --- a/EndlessVendetta/Source/EndlessVendetta/InteractableActor.cpp +++ /dev/null @@ -1,33 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - - -#include "InteractableActor.h" - -// Sets default values -AInteractableActor::AInteractableActor() -{ - // 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; - -} - -// Called when the game starts or when spawned -void AInteractableActor::BeginPlay() -{ - Super::BeginPlay(); - -} - -// Called every frame -void AInteractableActor::Tick(float DeltaTime) -{ - Super::Tick(DeltaTime); - -} - -void AInteractableActor::Interact() -{ - UE_LOG(LogTemp, Warning, TEXT("Interacted with %s"), *GetName()); -} - - diff --git a/EndlessVendetta/Source/EndlessVendetta/InteractableActor.h b/EndlessVendetta/Source/EndlessVendetta/InteractableActor.h deleted file mode 100644 index 4756112c..00000000 --- a/EndlessVendetta/Source/EndlessVendetta/InteractableActor.h +++ /dev/null @@ -1,26 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -#pragma once - -#include "CoreMinimal.h" -#include "GameFramework/Actor.h" -#include "InteractableActor.generated.h" - -UCLASS() -class ENDLESSVENDETTA_API AInteractableActor : public AActor -{ - GENERATED_BODY() - -protected: - // Called when the game starts or when spawned - virtual void BeginPlay() override; - -public: - // Sets default values for this actor's properties - AInteractableActor(); - // Called every frame - virtual void Tick(float DeltaTime) override; - - virtual void Interact(); - -}; diff --git a/EndlessVendetta/Source/EndlessVendetta/InteractionInterface.cpp b/EndlessVendetta/Source/EndlessVendetta/InteractionInterface.cpp new file mode 100644 index 00000000..cbcd25fe --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/InteractionInterface.cpp @@ -0,0 +1,6 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "InteractionInterface.h" + +// Add default functionality here for any IInteractionInterface functions that are not pure virtual. diff --git a/EndlessVendetta/Source/EndlessVendetta/InteractionInterface.h b/EndlessVendetta/Source/EndlessVendetta/InteractionInterface.h new file mode 100644 index 00000000..29746fab --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/InteractionInterface.h @@ -0,0 +1,26 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "UObject/Interface.h" +#include "InteractionInterface.generated.h" + +// This class does not need to be modified. +UINTERFACE(MinimalAPI) +class UInteractionInterface : public UInterface +{ + GENERATED_BODY() +}; + +/** + * + */ +class ENDLESSVENDETTA_API IInteractionInterface +{ + GENERATED_BODY() + + // Add interface functions to this class. This is the class that will be inherited to implement this interface. +public: + virtual void Interact(){} +};