VagabondRose-Plugins/Plugins/VRGAS/Source/VRGAS/Public/AbilitySystem/VRAbilitySystemComponent.h

70 lines
2.1 KiB
C++

// Copyright
#pragma once
#include "CoreMinimal.h"
#include "AbilitySystemComponent.h"
#include "StartupData/VRStartupAbilitySystemData.h"
#include "VRAbilitySystemComponent.generated.h"
// DECLARE_MULTICAST_DELEGATE_OneParam(FEffectAssetTags, const FGameplayTagContainer& /*AssetTags*/);
// DECLARE_MULTICAST_DELEGATE(FAbilitiesGiven);
class UVRStartupAbilitySystemData;
/**
*
*/
UCLASS()
class VRGAS_API UVRAbilitySystemComponent : public UAbilitySystemComponent
{
GENERATED_BODY()
public:
UVRAbilitySystemComponent(const FObjectInitializer& ObjectInitializer);
// void AbilityActorInfoSet();
// FEffectAssetTags EffectAssetTags;
// FAbilitiesGiven OnAbilitiesGiven;
#pragma region Startup
UPROPERTY(BlueprintReadOnly, Category = "StartupData")
bool bStartupAbilitiesGiven = false;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "StartupData")
TObjectPtr<UVRStartupAbilitySystemData> 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
#pragma region PublicInput
// Handle pressed input
virtual void InputTagPressed(FGameplayTag& InTag);
// Handle released input
virtual void InputTagReleased(FGameplayTag& InTag);
void ProcessAbilityInput(float DeltaTime, bool bGamePaused);
void ClearAbilityInput();
#pragma endregion
protected:
#pragma region ProtectedInput
virtual void AbilitySpecInputPressed(FGameplayAbilitySpec& Spec) override;
virtual void AbilitySpecInputReleased(FGameplayAbilitySpec& Spec) override;
// Handles to abilities that had their input pressed this frame.
TArray<FGameplayAbilitySpecHandle> InputPressedSpecHandles;
// Handles to abilities that had their input released this frame.
TArray<FGameplayAbilitySpecHandle> InputReleasedSpecHandles;
// Handles to abilities that have their input held.
TArray<FGameplayAbilitySpecHandle> InputHeldSpecHandles;
#pragma endregion
};