document.write("
#include "InputActionGameplayAbilityMappings.h"
#include "Abilities/GameplayAbility.h"
#pragma region FInputActionGameplayAbilityMappingData
bool FInputActionGameplayAbilityMappingData::IsValid() const
{
return GameplayAbilityClass && InputAction && TriggerType != ETriggerEvent::None;
}
bool FInputActionGameplayAbilityMappingData::operator==(const FInputActionGameplayAbilityMappingData& Other) const
{
return GameplayAbilityClass == Other.GameplayAbilityClass &&
InputAction == Other.InputAction &&
TriggerType == Other.TriggerType;
}
uint32 GetTypeHash(const FInputActionGameplayAbilityMappingData& Item)
{
return HashCombine(
HashCombine(GetTypeHash(Item.GameplayAbilityClass), GetTypeHash(Item.InputAction)),
GetTypeHash(Item.TriggerType)
);
}
#pragma endregion
FInputActionGameplayAbilityMappingData* UInputActionGameplayAbilityMappings::GetMappingDataByGameplayAbilityClass(
const TSubclassOf<UGameplayAbility>& TargetGameplayAbilityClass
) const
{
auto MatchByClass = [&TargetGameplayAbilityClass](const FInputActionGameplayAbilityMappingData& MappingData)
{
return TargetGameplayAbilityClass.Get() == MappingData.GameplayAbilityClass.Get();
};
return Mappings.Array().FindByPredicate(MatchByClass);
}
#if WITH_EDITOR
void UInputActionGameplayAbilityMappings::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
Super::PostEditChangeProperty(PropertyChangedEvent);
const FProperty* Property = PropertyChangedEvent.Property;
if (Property == nullptr ||
Property->GetFName() != GET_MEMBER_NAME_CHECKED(UInputActionGameplayAbilityMappings, Mappings) ||
Mappings.IsEmpty()) { return; }
TArray<FInputActionGameplayAbilityMappingData> InputAbilitiesArray = Mappings.Array();
Mappings.Reset();
for (int32 Index = 0; Index < InputAbilitiesArray.Num(); ++Index)
{
FInputActionGameplayAbilityMappingData& Info = InputAbilitiesArray[Index];
Info.InputID = Index;
Mappings.Add(Info);
}
}
#endif
InputActionGameplayAbilityMappings.cpp - Snippet hosted by \"Cacher\"
");