#pragma once #include "CoreMinimal.h" #include "Animation/AnimInstance.h" #include "AnimNotifyDelegateDelegate.h" #include "IsAttackingChangedDelegateDelegate.h" #include "NameDelegateDelegate.h" #include "EnemyAnimInstance.generated.h" class UHealthComponentBase; class USkeletalMeshComponent; UCLASS(Blueprintable, NonTransient) class UEnemyAnimInstance : public UAnimInstance { GENERATED_BODY() public: UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FAnimNotifyDelegate OnRangedAttackNotify; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FNameDelegate OnMeleeAttackNotify; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FAnimNotifyDelegate OnStopLeadingNotify; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FIsAttackingChangedDelegate OnIsAttackingChanged; protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) bool IsAttacking; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) bool IsAlive; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) float RandomStartPosition; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, Transient, meta=(AllowPrivateAccess=true)) UHealthComponentBase* HealthComponent; public: UEnemyAnimInstance(); UFUNCTION(BlueprintCallable, BlueprintPure) bool IsSlotPlayingAnyAnimation(FName SlotNodeName) const; UFUNCTION(BlueprintCallable, BlueprintPure) bool IsNotAttacking() const; UFUNCTION(BlueprintCallable, BlueprintPure) bool IsDead() const; UFUNCTION(BlueprintCallable, BlueprintPure) USkeletalMeshComponent* GetSkeletalMesh() const; };