70 lines
2.1 KiB
C++
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(EditDefaultsOnly, 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
|
|
|
|
};
|