UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GenericTeamAgentInterface.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "UObject/Interface.h"
9#include "GenericTeamAgentInterface.generated.h"
10
11UENUM(BlueprintType)
13{
14 enum Type : int
15 {
19 };
20}
21
22USTRUCT(BlueprintType)
24{
26
27private:
28 enum EPredefinedId
29 {
30 // if you want to change NoTeam's ID update FGenericTeamId::NoTeam
31
32 NoTeamId = 255
33 };
34
35protected:
36 UPROPERTY(Category = "TeamID", EditAnywhere, BlueprintReadWrite)
37 uint8 TeamID;
38
39public:
40 FGenericTeamId(uint8 InTeamID = NoTeamId) : TeamID(InTeamID)
41 {}
42
43 inline operator uint8() const { return TeamID; }
44
45 inline uint8 GetId() const { return TeamID; }
46 //FORCEINLINE void SetId(uint8 NewId) { TeamID = NewId; }
47
48 static AIMODULE_API FGenericTeamId GetTeamIdentifier(const AActor* TeamMember);
49 static AIMODULE_API ETeamAttitude::Type GetAttitude(const AActor* A, const AActor* B);
51 {
52 return AttitudeSolverImpl ? (AttitudeSolverImpl)(TeamA, TeamB) : ETeamAttitude::Neutral;
53 }
54
56
57 static AIMODULE_API void SetAttitudeSolver(const FAttitudeSolverFunction& Solver);
58 static AIMODULE_API void ResetAttitudeSolver();
59
60protected:
61 // the default implementation makes all teams hostile
62 // @note that for consistency IGenericTeamAgentInterface should be using the same function
63 // (by default it does)
65
66public:
68
70 {
71 return Value.GetId();
72 }
73};
74
75UINTERFACE(MinimalAPI)
80
82{
84
85
86 virtual void SetGenericTeamId(const FGenericTeamId& TeamID) {}
87
89 virtual FGenericTeamId GetGenericTeamId() const { return FGenericTeamId::NoTeam; }
90
92 virtual ETeamAttitude::Type GetTeamAttitudeTowards(const AActor& Other) const
93 {
95 return OtherTeamAgent ? FGenericTeamId::GetAttitude(GetGenericTeamId(), OtherTeamAgent->GetGenericTeamId())
97 }
98};
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UINTERFACE(...)
Definition ObjectMacros.h:780
#define GENERATED_IINTERFACE_BODY(...)
Definition ObjectMacros.h:770
#define GENERATED_UINTERFACE_BODY(...)
Definition ObjectMacros.h:769
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition GenericTeamAgentInterface.h:82
Definition AndroidPlatformMisc.h:14
Definition GenericTeamAgentInterface.h:77
Definition Interface.h:19
Definition GenericTeamAgentInterface.h:13
Type
Definition GenericTeamAgentInterface.h:15
@ Neutral
Definition GenericTeamAgentInterface.h:17
@ Hostile
Definition GenericTeamAgentInterface.h:18
@ Friendly
Definition GenericTeamAgentInterface.h:16
Definition GenericTeamAgentInterface.h:24
static ETeamAttitude::Type GetAttitude(FGenericTeamId TeamA, FGenericTeamId TeamB)
Definition GenericTeamAgentInterface.h:50
static AIMODULE_API FAttitudeSolverFunction AttitudeSolverImpl
Definition GenericTeamAgentInterface.h:64
static AIMODULE_API ETeamAttitude::Type GetAttitude(const AActor *A, const AActor *B)
Definition AIInterfaces.cpp:38
friend uint32 GetTypeHash(const FGenericTeamId Value)
Definition GenericTeamAgentInterface.h:69
uint8 GetId() const
Definition GenericTeamAgentInterface.h:45
static AIMODULE_API const FGenericTeamId NoTeam
Definition GenericTeamAgentInterface.h:67
TFunction< ETeamAttitude::Type(FGenericTeamId, FGenericTeamId)> FAttitudeSolverFunction
Definition GenericTeamAgentInterface.h:55