24 virtual ETeamAttitude::Type GetTeamAttitudeTowards(
const AActor&
Other)
const override;
26 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category =
"AI")
27 FGenericTeamId MyTeamID;
28 virtual
void SetGenericTeamId(const FGenericTeamId& NewTeamID) override;
29 virtual FGenericTeamId GetGenericTeamId()
const override{
return MyTeamID;};
31 UFUNCTION(BlueprintCallable, Category =
"AI")
32 int32 GetTeamID()
const{
return (MyTeamID == FGenericTeamId::NoTeam) ? INDEX_NONE : (int32)MyTeamID;};
34 void OnRep_MyTeamID(FGenericTeamId OldTeamID);
36 void UpdatePerceptionDetails() const;
40 virtual
void OnPossess(APawn* InPawn) override;
41 virtual
void BeginPlay() override;
43 virtual FVector GetFocalPointOnActor(const AActor *Actor) const override;
45 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "AI")
46 TObjectPtr<UBehaviorTree> Behaviour =
nullptr;
49 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Perception")
52 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "AI")
53 class UAISenseConfig_Sight* SightConfig;
54 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "AI")
55 class UAISenseConfig_Hearing* HearingConfig;
56 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "AI")
57 class UAISenseConfig_Prediction* PredictionConfig;
58 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "AI")
59 class UAISenseConfig_Team* TeamConfig;
60 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "AI")
61 class UAISenseConfig_Damage* DamageConfig;
63 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "AI")
66 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "AI")
67 class UAITraitsComponent* AITraitsComponentReference;
69 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "AI")
73 virtual
void Aim(const
bool bStartAiming = true) override;
74 virtual
void CrouchAction(const
bool bCrouch = true) override;
75 virtual
void ShootAction(const
bool bStartShooting = true) override;
76 virtual
void ShootAtTargetAction(const
bool bStartShooting = true, const FVector& TargetLocation = FVector::ZeroVector) override;
77 virtual
float Reload() override;
78 virtual
bool CheckAmmo(
bool& bNeedToReload) const override;
79 virtual
bool GetHasWeapon() const override;
80 virtual uint8 GetWeaponFireMode() const override;
81 virtual
float GetWeaponFireRate() const override;
83 UFUNCTION(BlueprintCallable, Category="AI Actions")
85 UFUNCTION(BlueprintCallable, Category="AI Actions")
86 virtual
bool PickupObject(const AActor* TargetObject) override;
87 UFUNCTION(BlueprintCallable, Category="AI Actions")
88 virtual
float MeleeAttack() override;
89 UFUNCTION(BlueprintCallable, Category="AI Actions")
90 virtual
float PlayAnimationMontage(UAnimMontage* Montage, const
float PlayRate = 1.0f, const
float InTimeToStartMontageAt = 0.0f, const
bool bStopAllMontages = true) override;
91 UFUNCTION(BlueprintCallable, Category="AI Actions")
92 virtual FVector PredictLocation(AActor* TargetActor) override;
93 UFUNCTION(BlueprintCallable, Category = "AI Actions")
94 virtual TArray<AActor*> GetHostileActors() const override;
95 UFUNCTION(BlueprintCallable, Category = "AI Actions")
96 virtual TArray<AActor*> GetPerceivedObjects(const TArray<
EAIStimuliType> Filters) const override;
97 UFUNCTION(BlueprintCallable, Category = "AI Actions")
98 virtual AActor* GetBestHostileActor() const override;
99 UFUNCTION(BlueprintCallable, Category = "AI Actions")
100 virtual
float GetMaxHealth() const override;
101 UFUNCTION(BlueprintCallable, Category="AI Actions")
102 virtual FVector GetLastKnownLocation(AActor* TargetActor, const TArray<
EAISense>& Senses) override;
108 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Perception")
110 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "
Custom ALS|Debugging")
111 bool bDebuggingMode = false;
114 UFUNCTION(BlueprintImplementableEvent, Category="Perception")
115 void OnForgottenStimulusBP(FAIStimulus Stimulus);
116 UFUNCTION(BlueprintImplementableEvent, Category="Perception")
117 void OnTargetPerceptionForgottenBP(AActor* Actor);
118 UFUNCTION(BlueprintImplementableEvent, Category="Perception")
119 void OnPerceptionUpdatedBP(const TArray<AActor*>& UpdatedActors);
125 UFUNCTION(BlueprintImplementableEvent, Category="Perception")
126 void OnTargetPerceptionUpdatedBP(AActor* Actor, FAIStimulus Stimulus);
127 UFUNCTION(BlueprintImplementableEvent, Category="Perception")
128 void OnTargetPerceptionInfoUpdatedBP(FActorPerceptionUpdateInfo UpdateInfo);
131 UFUNCTION(BlueprintImplementableEvent, Category="Perception")
132 void OnTargetSightUpdated(AActor* Actor, FAIStimulus Stimulus);
133 UFUNCTION(BlueprintImplementableEvent, Category="Perception")
134 void OnTargetHearingUpdated(AActor* Actor, FAIStimulus Stimulus);
135 UFUNCTION(BlueprintImplementableEvent, Category="Perception")
136 void OnTargetPredictionUpdated(AActor* Actor, FAIStimulus Stimulus);
137 UFUNCTION(BlueprintImplementableEvent, Category="Perception")
138 void OnTargetDamageUpdated(AActor* Actor, FAIStimulus Stimulus);
139 UFUNCTION(BlueprintImplementableEvent, Category="Perception")
140 void OnTargetTeamUpdated(AActor* Actor, FAIStimulus Stimulus);
141 UFUNCTION(BlueprintImplementableEvent, Category="Perception")
142 void OnTargetTouchUpdated(AActor* Actor, FAIStimulus Stimulus);
144 UFUNCTION(BlueprintImplementableEvent, Category="Perception")
145 void OnTargetActionUpdated(AActor* Actor, FAIStimulus Stimulus);
149 void ForgottenStimulus(FAIStimulus Stimulus);
151 void TargetPerceptionForgotten(AActor* Actor);
153 void PerceptionUpdated(const TArray<AActor*>& UpdatedActors);
155 void TargetPerceptionUpdated(AActor* Actor, FAIStimulus Stimulus);
157 void TargetPerceptionInfoUpdated(const FActorPerceptionUpdateInfo& UpdateInfo);
160 void CharacterDeath(
FPlayerDeath& DeathInfo, APawn* PawnThatDied);
164 void TargetSightUpdated(AActor* Actor, const FAIStimulus& Stimulus);
165 void TargetHearingUpdated(AActor* Actor, const FAIStimulus& Stimulus);
166 void TargetPredictionUpdated(AActor* Actor, const FAIStimulus& Stimulus);
167 void TargetDamageUpdated(AActor* Actor, const FAIStimulus& Stimulus);
168 void TargetTeamUpdated(AActor* Actor, const FAIStimulus& Stimulus);
170 void TargetTouchUpdated(AActor* Actor, const FAIStimulus& Stimulus);
172 void TargetActionUpdated(AActor* Actor, const FAIStimulus& Stimulus);