Get All Active Montages from UAnimInstance in Unreal Engine 5 C++



UCLASS()
class TESTING_API UMyBFL : public UBlueprintFunctionLibrary {
    GENERATED_BODY()

   public:
    UFUNCTION(BlueprintCallable)
    static TArray<UAnimMontage*> GetActiveMontages(UAnimInstance* AnimInstance) {
        TArray<UAnimMontage*> ActiveMontages;

        // Return if Anim Instance is invalid
        if (!IsValid(AnimInstance)) {
            return ActiveMontages;
        }

        // Iterate and get all active montages
        for (auto& MontageInstance : AnimInstance->MontageInstances) {
            if (MontageInstance && MontageInstance->Montage && MontageInstance->IsActive()) {
                ActiveMontages.Add(MontageInstance->Montage);
            }
        }

        return ActiveMontages;
    }
};