diff --git a/Source/GameBaseFramework/Private/Animation/GBFAnimInstance.cpp b/Source/GameBaseFramework/Private/Animation/GBFAnimInstance.cpp index f48fe052..f9b493ef 100644 --- a/Source/GameBaseFramework/Private/Animation/GBFAnimInstance.cpp +++ b/Source/GameBaseFramework/Private/Animation/GBFAnimInstance.cpp @@ -13,6 +13,16 @@ void UGBFAnimInstance::InitializeWithAbilitySystem( UAbilitySystemComponent * as GameplayTagPropertyMap.Initialize( this, asc ); } +UAbilitySystemComponent * UGBFAnimInstance::GetAbilitySystemComponent_Implementation() const +{ + if ( const auto * owning_actor = GetOwningActor() ) + { + return UAbilitySystemGlobals::GetAbilitySystemComponentFromActor( owning_actor ); + } + + return nullptr; +} + #if WITH_EDITOR EDataValidationResult UGBFAnimInstance::IsDataValid( FDataValidationContext & context ) const { @@ -28,11 +38,8 @@ void UGBFAnimInstance::NativeInitializeAnimation() { Super::NativeInitializeAnimation(); - if ( const auto * owning_actor = GetOwningActor() ) + if ( auto * asc = GetAbilitySystemComponent() ) { - if ( auto * asc = UAbilitySystemGlobals::GetAbilitySystemComponentFromActor( owning_actor ) ) - { - InitializeWithAbilitySystem( asc ); - } + InitializeWithAbilitySystem( asc ); } } \ No newline at end of file diff --git a/Source/GameBaseFramework/Private/Animation/GBFAnimationFunctionLibrary.cpp b/Source/GameBaseFramework/Private/Animation/GBFAnimationFunctionLibrary.cpp index db4b9e85..429d1315 100644 --- a/Source/GameBaseFramework/Private/Animation/GBFAnimationFunctionLibrary.cpp +++ b/Source/GameBaseFramework/Private/Animation/GBFAnimationFunctionLibrary.cpp @@ -2,7 +2,7 @@ #include "Animation/GBFAnimLayerSelectionSet.h" -TSubclassOf UGBFAnimationFunctionLibrary::SelectBestLayerFromAnimLayerSelectionSet( const FGBFAnimLayerSelectionSet & anim_layer_selection_set, const FGameplayTagContainer & cosmetic_tags ) +TSubclassOf< UAnimInstance > UGBFAnimationFunctionLibrary::SelectBestLayerFromAnimLayerSelectionSet( const FGBFAnimLayerSelectionSet & anim_layer_selection_set, const FGameplayTagContainer & cosmetic_tags ) { return anim_layer_selection_set.SelectBestLayer( cosmetic_tags ); } diff --git a/Source/GameBaseFramework/Public/Animation/GBFAnimInstance.h b/Source/GameBaseFramework/Public/Animation/GBFAnimInstance.h index b12f0bb0..e74a2de7 100644 --- a/Source/GameBaseFramework/Public/Animation/GBFAnimInstance.h +++ b/Source/GameBaseFramework/Public/Animation/GBFAnimInstance.h @@ -14,9 +14,13 @@ class GAMEBASEFRAMEWORK_API UGBFAnimInstance : public UAnimInstance GENERATED_BODY() public: + UFUNCTION( BlueprintCallable ) virtual void InitializeWithAbilitySystem( UAbilitySystemComponent * asc ); protected: + UFUNCTION( BlueprintCallable, BlueprintNativeEvent ) + UAbilitySystemComponent * GetAbilitySystemComponent() const; + #if WITH_EDITOR EDataValidationResult IsDataValid( FDataValidationContext & context ) const override; #endif // WITH_EDITOR diff --git a/Source/GameBaseFramework/Public/Animation/GBFAnimationFunctionLibrary.h b/Source/GameBaseFramework/Public/Animation/GBFAnimationFunctionLibrary.h index 99062ebf..0f4128a4 100644 --- a/Source/GameBaseFramework/Public/Animation/GBFAnimationFunctionLibrary.h +++ b/Source/GameBaseFramework/Public/Animation/GBFAnimationFunctionLibrary.h @@ -14,7 +14,6 @@ class GAMEBASEFRAMEWORK_API UGBFAnimationFunctionLibrary final : public UBluepri GENERATED_BODY() public: - UFUNCTION( BlueprintCallable ) static TSubclassOf< UAnimInstance > SelectBestLayerFromAnimLayerSelectionSet( const FGBFAnimLayerSelectionSet & anim_layer_selection_set, const FGameplayTagContainer & cosmetic_tags ); };