UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Pawn.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"
9#include "UObject/CoreNet.h"
10#include "Engine/EngineTypes.h"
11#include "GameFramework/Actor.h"
13
14#include "Pawn.generated.h"
15
16class AController;
17class APhysicsVolume;
19class APlayerState;
21class UCanvas;
22class UDamageType;
23class UInputComponent;
26class UPlayer;
27class UPrimitiveComponent;
28
30
34
41UCLASS(config=Game, BlueprintType, Blueprintable, hideCategories=(Navigation), meta=(ShortTooltip="A Pawn is an actor that can be 'possessed' and receive input from a controller."), MinimalAPI)
42class APawn : public AActor, public INavAgentInterface
43{
45
46public:
49
50 ENGINE_API virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
52
54 UFUNCTION(BlueprintCallable, meta=(Tooltip="Return our PawnMovementComponent, if we have one."), Category=Pawn)
55 ENGINE_API virtual UPawnMovementComponent* GetMovementComponent() const;
56
58 virtual UPrimitiveComponent* GetMovementBase() const { return nullptr; }
59
61 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Pawn)
62 uint32 bUseControllerRotationPitch:1;
63
65 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Pawn)
66 uint32 bUseControllerRotationYaw:1;
67
69 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Pawn)
70 uint32 bUseControllerRotationRoll:1;
71
81 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Pawn)
83
84private:
86 uint32 bInputEnabled:1;
87
90
91protected:
94
95public:
97 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Camera)
98 float BaseEyeHeight;
99
104 UPROPERTY(EditAnywhere, Category=Pawn)
106
112 UPROPERTY(EditAnywhere, Category=Pawn)
114
115protected:
119
120public:
121
123 UE_DEPRECATED(5.6, "This property is deprecated, use GetRemoteViewPitch()/RemoteViewPitch16 instead.")
126
128 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(DisplayName="AI Controller Class"), Category=Pawn)
130
136
146 UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, Category=AI)
147 ENGINE_API void PawnMakeNoise(float Loudness, FVector NoiseLocation, bool bUseNoiseMakerLocation = true, AActor* NoiseMaker = nullptr);
148
150 UFUNCTION(BlueprintCallable, Category = "Pawn")
152
153 // Is this pawn the ViewTarget of a local PlayerController? Helpful for determining whether the pawn is
154 // visible/critical for any VFX. NOTE: Technically there may be some cases where locally controlled pawns return
155 // false for this, such as if you are using a remote camera view of some sort. But generally it will be true for
156 // locally controlled pawns, and it will always be true for pawns that are being spectated in-game or in Replays.
157 UFUNCTION(BlueprintCallable, Category = "Pawn")
158 ENGINE_API bool IsLocallyViewed() const;
159
161
163 static ENGINE_API FOnPawnBeginPlay OnPawnBeginPlay;
164
165private:
167 UPROPERTY(replicatedUsing=OnRep_PlayerState, BlueprintReadOnly, Category=Pawn, meta=(AllowPrivateAccess="true"))
168 TObjectPtr<APlayerState> PlayerState;
169
170public:
171
173 ENGINE_API void SetPlayerState(APlayerState* NewPlayerState);
174
176 APlayerState* GetPlayerState() const { return PlayerState; }
177
178 TObjectPtr<APlayerState> GetPlayerStateObjPtr() const { return PlayerState; }
179
181 template<class T>
182 T* GetPlayerState() const { return Cast<T>(PlayerState); }
183
185 template<class T>
186 T* GetPlayerStateChecked() const { return CastChecked<T>(PlayerState); }
187
188protected:
191
192public:
193
195 UPROPERTY(BlueprintReadOnly, transient, Category="Pawn")
197
201
205
207 float AllowedYawError;
208
210 ENGINE_API virtual void TurnOff();
211
214
217
224
226 ENGINE_API virtual APhysicsVolume* GetPhysicsVolume() const override;
227
229 UFUNCTION(BlueprintPure, Category=Pawn)
230 static ENGINE_API AActor* GetMovementBaseActor(const APawn* Pawn);
231
233 ENGINE_API virtual bool ReachedDesiredRotation();
234
236 ENGINE_API virtual float GetDefaultHalfHeight() const;
237
239 UE_DEPRECATED(4.24, "IsControlled is deprecated. To check if this pawn is controlled by anything, then call IsPawnControlled. To check if this pawn is controlled only by the player then call IsPlayerControlled")
240 UFUNCTION(BlueprintCallable, Category=Pawn)
241 ENGINE_API bool IsControlled() const;
242
244 UFUNCTION(BlueprintCallable, Category = Pawn)
246
248 UFUNCTION(BlueprintCallable, Category=Pawn)
249 AController* GetController() const;
250
252 template < class T >
253 T* GetController() const
254 {
255 return Cast<T>(GetController());
256 }
257
260
262 UFUNCTION(BlueprintCallable, Category=Pawn)
263 ENGINE_API FRotator GetControlRotation() const;
264
266 UFUNCTION()
268
270 UFUNCTION()
271 ENGINE_API virtual void OnRep_PlayerState();
272
273 //~ Begin AActor Interface.
274 ENGINE_API virtual FVector GetVelocity() const override;
276 ENGINE_API virtual FString GetHumanReadableName() const override;
277 ENGINE_API virtual bool ShouldTickIfViewportsOnly() const override;
278 ENGINE_API virtual bool IsNetRelevantFor(const AActor* RealViewer, const AActor* ViewTarget, const FVector& SrcLocation) const override;
279 ENGINE_API virtual void PostNetReceiveLocationAndRotation() override;
280 ENGINE_API virtual void PostNetReceiveVelocity(const FVector& NewVelocity) override;
281 ENGINE_API virtual void DisplayDebug(UCanvas* Canvas, const FDebugDisplayInfo& DebugDisplay, float& YL, float& YPos) override;
282 ENGINE_API virtual void GetActorEyesViewPoint( FVector& Location, FRotator& Rotation ) const override;
283 ENGINE_API virtual void OutsideWorldBounds() override;
284 ENGINE_API virtual void BeginPlay() override;
286 ENGINE_API virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
287 ENGINE_API virtual void PreInitializeComponents() override;
288 ENGINE_API virtual void PostInitializeComponents() override;
289 ENGINE_API virtual const AActor* GetNetOwner() const override;
290 ENGINE_API virtual UPlayer* GetNetOwningPlayer() override;
291 ENGINE_API virtual UPlayer* GetNetOwningPlayerAnyRole() override;
292 ENGINE_API virtual class UNetConnection* GetNetConnection() const override;
294 ENGINE_API virtual void PostRegisterAllComponents() override;
296 ENGINE_API virtual void BecomeViewTarget(APlayerController* PC) override;
297 ENGINE_API virtual void EndViewTarget(APlayerController* PC) override;
298 ENGINE_API virtual void EnableInput(APlayerController* PlayerController) override;
299 ENGINE_API virtual void DisableInput(APlayerController* PlayerController) override;
300 ENGINE_API virtual void TeleportSucceeded(bool bIsATest) override;
301 ENGINE_API virtual bool IsBasedOnActor(const AActor* Other) const override;
302
304 ENGINE_API virtual bool CanBeBaseForCharacter(APawn* APawn) const override;
305 //~ End AActor Interface
306
311 UFUNCTION(BlueprintCallable, Category="AI|Navigation", meta=(AdvancedDisplay="bForceUpdate"))
312 ENGINE_API void SetCanAffectNavigationGeneration(bool bNewValue, bool bForceUpdate = false);
313
315 virtual void UpdateNavigationRelevance() {}
316
317 //~ Begin INavAgentInterface Interface
318 ENGINE_API virtual const FNavAgentProperties& GetNavAgentPropertiesRef() const override;
320 UFUNCTION(BlueprintCallable, Category=Pawn)
321 virtual FVector GetNavAgentLocation() const override { return GetActorLocation() - FVector(0.f, 0.f, BaseEyeHeight); }
322 ENGINE_API virtual void GetMoveGoalReachTest(const AActor* MovingActor, const FVector& MoveOffset, FVector& GoalOffset, float& GoalRadius, float& GoalHalfHeight) const override;
323 //~ End INavAgentInterface Interface
324
326 ENGINE_API void UpdateNavAgent();
327
333
334#if WITH_EDITOR
335 ENGINE_API virtual void EditorApplyRotation(const FRotator& DeltaRotation, bool bAltDown, bool bShiftDown, bool bCtrlDown) override;
336 ENGINE_API virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override;
337#endif
338
340 ENGINE_API virtual FVector GetGravityDirection() const;
341
343 ENGINE_API virtual FQuat GetGravityTransform() const;
344
346 ENGINE_API virtual void SetPlayerDefaults();
347
349 ENGINE_API virtual void RecalculateBaseEyeHeight();
350
352 bool InputEnabled() const { return bInputEnabled; }
353
354
359 ENGINE_API virtual void PossessedBy(AController* NewController);
360
362 UFUNCTION(BlueprintImplementableEvent, BlueprintAuthorityOnly, meta=(DisplayName= "Possessed"))
364
366 ENGINE_API virtual void UnPossessed();
367
369 UFUNCTION(BlueprintImplementableEvent, BlueprintAuthorityOnly, meta=(DisplayName= "Unpossessed"))
371
372
374 UFUNCTION(BlueprintImplementableEvent)
376
378 UPROPERTY(BlueprintAssignable, Category = Pawn)
380
383
384
386 UFUNCTION(BlueprintImplementableEvent)
388
390 UPROPERTY(BlueprintAssignable, Category = Pawn)
392
398
401
403 ENGINE_API virtual void PawnClientRestart();
404
407
408
410 UFUNCTION(BlueprintPure, Category=Pawn)
411 ENGINE_API virtual bool IsLocallyControlled() const;
412
418 UFUNCTION(BlueprintCallable, BlueprintPure, Category = Pawn)
419 ENGINE_API FPlatformUserId GetPlatformUserId() const;
420
422 UFUNCTION(BlueprintPure, Category=Pawn)
424
426 UFUNCTION(BlueprintPure, Category = Pawn)
428
433 ENGINE_API virtual FRotator GetViewRotation() const;
434
437
443 UFUNCTION(BlueprintCallable, Category=Pawn)
445
447 ENGINE_API virtual bool InFreeCam() const;
448
450 ENGINE_API virtual void FaceRotation(FRotator NewControlRotation, float DeltaTime = 0.f);
451
453 UFUNCTION(BlueprintCallable, Category=Pawn, meta=(Keywords = "Delete"))
455
457 UFUNCTION(BlueprintCallable, Category=Pawn)
459
463
466
469
471 virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { /* No bindings by default.*/ }
472
473public:
483 UFUNCTION(BlueprintCallable, Category="Pawn|Input", meta=(Keywords="AddInput"))
484 ENGINE_API virtual void AddMovementInput(FVector WorldDirection, float ScaleValue = 1.0f, bool bForce = false);
485
493 UFUNCTION(BlueprintCallable, Category="Pawn|Input", meta=(Keywords="GetMovementInput GetInput"))
495
505 UFUNCTION(BlueprintCallable, Category="Pawn|Input", meta=(Keywords="GetMovementInput GetInput"))
507
514 UFUNCTION(BlueprintCallable, Category="Pawn|Input", meta=(Keywords="ConsumeInput"))
516
523 UFUNCTION(BlueprintCallable, Category="Pawn|Input", meta=(Keywords="up down addpitch"))
525
532 UFUNCTION(BlueprintCallable, Category="Pawn|Input", meta=(Keywords="left right turn addyaw"))
534
541 UFUNCTION(BlueprintCallable, Category="Pawn|Input", meta=(Keywords="addroll"))
543
545 UFUNCTION(BlueprintCallable, Category="Pawn|Input")
546 ENGINE_API virtual bool IsMoveInputIgnored() const;
547
548 UFUNCTION(BlueprintCallable, Category = "Pawn|Input")
550
558
565
567 UPROPERTY(EditDefaultsOnly, Category = "Pawn|Input")
569
570public:
573
576
579
582
585
588
589};
590
591
593// Pawn inlines
594
595inline AController* APawn::GetController() const
596{
597 return Controller;
598}
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
EAutoPossessAI
Definition EngineTypes.h:3415
return true
Definition ExternalRpcRegistry.cpp:601
#define FVector
Definition IOSSystemIncludes.h:8
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define UCLASS(...)
Definition ObjectMacros.h:776
@ Restart
Definition PrecomputedVolumetricLightmapStreaming.cpp:25
bool left(const int *a, const int *b, const int *c)
Definition RecastMesh.cpp:182
#define DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_ThreeParams(SparseDelegateClass, OwningClass, DelegateName, Param1Type, Param1Name, Param2Type, Param2Name, Param3Type, Param3Name)
Definition SparseDelegate.h:448
#define DECLARE_DYNAMIC_MULTICAST_SPARSE_DELEGATE_OneParam(SparseDelegateClass, OwningClass, DelegateName, Param1Type, Param1Name)
Definition SparseDelegate.h:446
float Val(const FString &Value)
Definition UnrealMath.cpp:3163
if(Failed) console_printf("Failed.\n")
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
virtual ENGINE_API APhysicsVolume * GetPhysicsVolume() const
Definition Actor.cpp:2956
Definition Controller.h:41
Definition PhysicsVolume.h:17
Definition PlayerController.h:261
Definition PlayerState.h:42
Definition DisplayDebugHelpers.h:9
Definition CoreNet.h:300
Definition UObjectGlobals.h:1292
Definition NavAgentInterface.h:20
Definition CoreNet.h:570
Definition Array.h:670
Definition EnumAsByte.h:22
Definition SubclassOf.h:30
Definition Canvas.h:159
Definition DamageType.h:21
Definition InputComponent.h:729
Definition NetConnection.h:284
Definition PawnMovementComponent.h:43
Definition PawnNoiseEmitterComponent.h:20
Definition Player.h:18
Definition EngineTypes.h:3429
@ false
Definition radaudio_common.h:23
Definition DamageEvents.h:16
Definition NavigationTypes.h:453
Definition CoreMiscDefines.h:470
Definition UnrealType.h:6865
Definition ObjectPtr.h:488