// © 2024 Long Ly. All rights reserved. Any unauthorized use, reproduction, or distribution of this trademark is strictly prohibited and may result in legal action. #pragma once #include "CoreMinimal.h" #include "GameplayTagContainer.h" #include "Engine/DataAsset.h" #include "OLSInputConfigDataAsset.generated.h" /** * FOLSInputAction * * Struct used to map a input action to a gameplay input tag. */ USTRUCT(BlueprintType) struct FOLSInputAction { GENERATED_BODY() public: UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) TObjectPtr InputAction = nullptr; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Meta = (Categories = "InputTag")) FGameplayTag InputTag = FGameplayTag::EmptyTag; }; DECLARE_LOG_CATEGORY_EXTERN(LogOLSInputConfigDataAsset, Verbose, All); /** * UOLSInputConfigDataAsset * * Non-mutable data asset that contains input configuration properties. */ UCLASS(BlueprintType, Const) class OLS_API UOLSInputConfigDataAsset : public UDataAsset { GENERATED_BODY() public: UOLSInputConfigDataAsset(const FObjectInitializer& objectInitializer); public: UFUNCTION(BlueprintCallable, Category = "Lyra|Pawn") const UInputAction* FindNativeInputActionForTag(const FGameplayTag& inputTag, bool shouldLogNotFound = true) const; UFUNCTION(BlueprintCallable, Category = "Lyra|Pawn") const UInputAction* FindAbilityInputActionForTag(const FGameplayTag& inputTag, bool shouldLogNotFound = true) const; public: // List of input actions used by the owner. These input actions are mapped to a gameplay tag and must be manually bound. UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Meta = (TitleProperty = "InputAction")) TArray NativeInputActions; // List of input actions used by the owner. These input actions are mapped to a gameplay tag and are automatically bound to abilities with matching input tags. UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Meta = (TitleProperty = "InputAction")) TArray AbilityInputActions; };