From 085d8e3906dea94d110746ef459e91bd028780e8 Mon Sep 17 00:00:00 2001 From: MostExcellent Date: Thu, 24 Oct 2024 16:11:14 -0700 Subject: [PATCH] Modified application of startup data --- .../VRStartupAbilitySystemData.cpp | 2 +- .../VRAbilitySystemComponent.cpp | 14 +++++++++++++- .../StartupData/VRStartupAbilitySystemData.h | 2 +- .../AbilitySystem/VRAbilitySystemComponent.h | 19 ++++++++++--------- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/Plugins/VRGAS/Source/VRGAS/Private/AbilitySystem/StartupData/VRStartupAbilitySystemData.cpp b/Plugins/VRGAS/Source/VRGAS/Private/AbilitySystem/StartupData/VRStartupAbilitySystemData.cpp index 8a11efd..eef65e9 100644 --- a/Plugins/VRGAS/Source/VRGAS/Private/AbilitySystem/StartupData/VRStartupAbilitySystemData.cpp +++ b/Plugins/VRGAS/Source/VRGAS/Private/AbilitySystem/StartupData/VRStartupAbilitySystemData.cpp @@ -6,7 +6,7 @@ #include "AbilitySystemComponent.h" #include "VRGASUtils.h" -void UVRStartupAbilitySystemData::GiveToAbilitySystemComponent(UAbilitySystemComponent* InAbilitySystemComponent, int32 ApplyLevel) +void UVRStartupAbilitySystemData::GiveToAbilitySystemComponent(UAbilitySystemComponent* InAbilitySystemComponent, int32 ApplyLevel) const { check(InAbilitySystemComponent) diff --git a/Plugins/VRGAS/Source/VRGAS/Private/AbilitySystem/VRAbilitySystemComponent.cpp b/Plugins/VRGAS/Source/VRGAS/Private/AbilitySystem/VRAbilitySystemComponent.cpp index c7f329e..311368c 100644 --- a/Plugins/VRGAS/Source/VRGAS/Private/AbilitySystem/VRAbilitySystemComponent.cpp +++ b/Plugins/VRGAS/Source/VRGAS/Private/AbilitySystem/VRAbilitySystemComponent.cpp @@ -12,16 +12,28 @@ UVRAbilitySystemComponent::UVRAbilitySystemComponent(const FObjectInitializer& O { } +#pragma region Startup void UVRAbilitySystemComponent::ApplyStartupData() { if (StartupData) { StartupData->GiveToAbilitySystemComponent(this, DefaultStartingAbilityLevel); + bStartupAbilitiesGiven = true; } UE_LOG(VRGAS_Log, Error, TEXT("UVRAbilitySystemComponent::ApplyStartupData - No Startup Data found!")) } +void UVRAbilitySystemComponent::ApplyExternalStartupData(const UVRStartupAbilitySystemData* InStartupData, const uint32 InStartingAbilityLevel) +{ + check(InStartupData); + + InStartupData->GiveToAbilitySystemComponent(this, InStartingAbilityLevel); + bStartupAbilitiesGiven = true; +} +#pragma endregion + +#pragma region Input void UVRAbilitySystemComponent::InputTagPressed(FGameplayTag& InTag) { if (!InTag.IsValid()) return; @@ -164,5 +176,5 @@ void UVRAbilitySystemComponent::AbilitySpecInputReleased(FGameplayAbilitySpec& S InvokeReplicatedEvent(EAbilityGenericReplicatedEvent::InputReleased, Spec.Handle, Spec.ActivationInfo.GetActivationPredictionKey()); } } - +#pragma endregion diff --git a/Plugins/VRGAS/Source/VRGAS/Public/AbilitySystem/StartupData/VRStartupAbilitySystemData.h b/Plugins/VRGAS/Source/VRGAS/Public/AbilitySystem/StartupData/VRStartupAbilitySystemData.h index 5fcaa9e..7f7614a 100644 --- a/Plugins/VRGAS/Source/VRGAS/Public/AbilitySystem/StartupData/VRStartupAbilitySystemData.h +++ b/Plugins/VRGAS/Source/VRGAS/Public/AbilitySystem/StartupData/VRStartupAbilitySystemData.h @@ -24,7 +24,7 @@ class VRGAS_API UVRStartupAbilitySystemData : public UDataAsset public: // Gives abilities and ability sets to the target ASC, as well as applies the attribute initializer gameplay effect - virtual void GiveToAbilitySystemComponent(UAbilitySystemComponent* InAbilitySystemComponent, int32 ApplyLevel = 1); + virtual void GiveToAbilitySystemComponent(UAbilitySystemComponent* InAbilitySystemComponent, int32 ApplyLevel = 1) const; // Add accessors as needed protected: diff --git a/Plugins/VRGAS/Source/VRGAS/Public/AbilitySystem/VRAbilitySystemComponent.h b/Plugins/VRGAS/Source/VRGAS/Public/AbilitySystem/VRAbilitySystemComponent.h index 2b6e717..4c8d542 100644 --- a/Plugins/VRGAS/Source/VRGAS/Public/AbilitySystem/VRAbilitySystemComponent.h +++ b/Plugins/VRGAS/Source/VRGAS/Public/AbilitySystem/VRAbilitySystemComponent.h @@ -4,6 +4,7 @@ #include "CoreMinimal.h" #include "AbilitySystemComponent.h" +#include "StartupData/VRStartupAbilitySystemData.h" #include "VRAbilitySystemComponent.generated.h" // DECLARE_MULTICAST_DELEGATE_OneParam(FEffectAssetTags, const FGameplayTagContainer& /*AssetTags*/); @@ -24,11 +25,18 @@ public: // FEffectAssetTags EffectAssetTags; // FAbilitiesGiven OnAbilitiesGiven; - #pragma region PublicStartup - UPROPERTY(BlueprintReadOnly, Category = "Startup Data") + #pragma region Startup + UPROPERTY(BlueprintReadOnly, Category = "StartupData") bool bStartupAbilitiesGiven = false; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "StartupData") + TObjectPtr StartupData; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "StartupData", meta = (ClampMin = 1)) + int DefaultStartingAbilityLevel = 1; virtual void ApplyStartupData(); + virtual void ApplyExternalStartupData(const UVRStartupAbilitySystemData* InStartupData, const uint32 InStartingAbilityLevel = 1); #pragma endregion // Add startup abilities @@ -58,11 +66,4 @@ protected: TArray InputHeldSpecHandles; #pragma endregion - #pragma region ProtectedStartup - UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Startup Data") - TObjectPtr StartupData; - - UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Startup Data", meta = (ClampMin = 1)) - int DefaultStartingAbilityLevel = 1; - #pragma endregion };