Space Plunder
Loading...
Searching...
No Matches
CustomAIController.h
Go to the documentation of this file.
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "AIController.h"
7#include "GenericTeamAgentInterface.h"
8#include "Data/AIDataTypes.h"
10#include "CustomAIController.generated.h"
11
12struct FPlayerDeath;
13struct FActorPerceptionUpdateInfo;
14struct FAIStimulus;
15UCLASS()
16class CUSTOMALS_API ACustomAIController : public AAIController, public IAIActionsInterface
17{
18 GENERATED_BODY()
19
20public:
22
23
24 virtual ETeamAttitude::Type GetTeamAttitudeTowards(const AActor& Other) const override;
25
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;};
30
31 UFUNCTION(BlueprintCallable, Category = "AI")
32 int32 GetTeamID() const{return (MyTeamID == FGenericTeamId::NoTeam) ? INDEX_NONE : (int32)MyTeamID;};
33 UFUNCTION()
34 void OnRep_MyTeamID(FGenericTeamId OldTeamID);
35
36 void UpdatePerceptionDetails() const;
37
38protected:
39
40 virtual void OnPossess(APawn* InPawn) override;
41 virtual void BeginPlay() override;
42
43 virtual FVector GetFocalPointOnActor(const AActor *Actor) const override;
44
45 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "AI")
46 TObjectPtr<UBehaviorTree> Behaviour = nullptr;
47
48
49 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Perception")
50 class UAdvancedAIPerceptionComponent* AIPerceptionComponent;
51
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;
62
63 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "AI")
64 class UAISenseConfig_Actions* ActionsConfig;
65
66 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "AI")
67 class UAITraitsComponent* AITraitsComponentReference;
68
69 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "AI")
70 class ACustomAICharacter* CustomAICharacter = nullptr;
71
72 //- AI Actions //
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;
82
83 UFUNCTION(BlueprintCallable, Category="AI Actions")
84 virtual void UpdateMovementSpeed(const EAIMovementSpeed MovementSpeed = EAIMovementSpeed::Running, const EAIMovementType MovementType = EAIMovementType::Normal) override;
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;
103
104 UFUNCTION()
105 void AIStateChanged(EAIStateType State);
106
107 // default value 255 is for “No Team’
108 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Perception")
109 uint8 TeamID = 2;
110 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Custom ALS|Debugging")
111 bool bDebuggingMode = false;
112
113
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);
129
130
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);
143
144 UFUNCTION(BlueprintImplementableEvent, Category="Perception")
145 void OnTargetActionUpdated(AActor* Actor, FAIStimulus Stimulus);
146
147 //- Perception functions Bind //
148 UFUNCTION()
149 void ForgottenStimulus(FAIStimulus Stimulus);
150 UFUNCTION()
151 void TargetPerceptionForgotten(AActor* Actor);
152 UFUNCTION()
153 void PerceptionUpdated(const TArray<AActor*>& UpdatedActors);
154 UFUNCTION()
155 void TargetPerceptionUpdated(AActor* Actor, FAIStimulus Stimulus);
156 UFUNCTION()
157 void TargetPerceptionInfoUpdated(const FActorPerceptionUpdateInfo& UpdateInfo);
158
159 UFUNCTION()
160 void CharacterDeath(FPlayerDeath& DeathInfo, APawn* PawnThatDied);
161
162
163 //- Seperate Senses //
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);
169
170 void TargetTouchUpdated(AActor* Actor, const FAIStimulus& Stimulus);
171
172 void TargetActionUpdated(AActor* Actor, const FAIStimulus& Stimulus);
173
174
175private:
176
177
178
179 // void StartDetectingEnemy();
180
181};
EAIMovementSpeed
Definition AIDataTypes.h:84
EAIStateType
Definition AIDataTypes.h:121
EAIMovementType
Definition AIDataTypes.h:93
EAISense
Definition AIDataTypes.h:60
EAIStimuliType
Definition BaseData.h:198
UCLASS(Blueprintable, BlueprintType, ClassGroup=(BucciGames), meta=(BlueprintSpawnableComponent)) class CHATSYSTEM_API UChatSystemComponent
Definition ChatSystemComponent.h:13
Definition CustomAICharacter.h:20
Definition CustomAIController.h:17
Definition AIActionsInterface.h:20
Definition AISenseConfig_Actions.h:17
Definition AdvancedAIPerceptionComponent.h:15
Definition BaseData.h:613