UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
LocalPlayer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3//=============================================================================
4// LocalPlayer
5//=============================================================================
6
7#pragma once
8
9#include "CoreMinimal.h"
12#include "Engine/EngineTypes.h"
13#include "Input/Reply.h"
14#include "Online/CoreOnline.h"
15#include "SceneTypes.h"
16#include "Engine/Player.h"
19
22
23#include "LocalPlayer.generated.h"
24
25
26#define INVALID_CONTROLLERID (-1)
27
28class AActor;
29class FSceneView;
30class FSlateUser;
31class FViewport;
32class UGameInstance;
34class ULocalPlayer;
35struct FMinimalViewInfo;
37
40{
44
46 ENGINE_API bool IsValid() const;
47
49 ENGINE_API bool IsInitialized() const;
50
54
56 ENGINE_API UWorld* GetWorld() const;
57
60
63
66
68 template<class T>
69 inline T* GetPlayerController(bool bCastChecked = false) const
70 {
71 if (bCastChecked)
72 {
74 }
75 else
76 {
78 }
79 }
80
83
85 template<class T>
86 inline T* GetGameState(bool bCastChecked = false) const
87 {
88 if (bCastChecked)
89 {
91 }
92 else
93 {
94 return Cast<T>(GetGameState());
95 }
96 }
97
100
102 template<class T>
103 inline T* GetPlayerState(bool bCastChecked = false) const
104 {
105 if (bCastChecked)
106 {
108 }
109 else
110 {
111 return Cast<T>(GetPlayerState());
112 }
113 }
114
116 ENGINE_API class AHUD* GetHUD() const;
117
119 template<class T>
120 inline T* GetHUD(bool bCastChecked = false) const
121 {
122 if (bCastChecked)
123 {
125 }
126 else
127 {
128 return Cast<T>(GetHUD());
129 }
130 }
131
133 ENGINE_API class APawn* GetPawn() const;
134
136 template<class T>
137 inline T* GetPawn(bool bCastChecked = false) const
138 {
139 if (bCastChecked)
140 {
142 }
143 else
144 {
145 return Cast<T>(GetPawn());
146 }
147 }
148
149private:
150
151 /* Set the local player. */
152 ENGINE_API void SetLocalPlayer( const class ULocalPlayer* InLocalPlayer );
153
154 /* Set the local player via a player controller. */
155 ENGINE_API void SetPlayerController( const class APlayerController* InPlayerController );
156
158
160};
161
167UCLASS(Within=Engine, config=Engine, transient, MinimalAPI)
169{
171
172public:
173
176
179
181 UPROPERTY()
182 TObjectPtr<class UGameViewportClient> ViewportClient;
183
185 FVector2D Origin;
186
189
191 FVector LastViewLocation;
192
194 UPROPERTY(config)
195 TEnumAsByte<enum EAspectRatioAxisConstraint> AspectRatioAxisConstraint;
196
198 UPROPERTY()
199 TSubclassOf<class APlayerController> PendingLevelPlayerControllerClass;
200
202 UPROPERTY(VisibleAnywhere, transient, Category=LocalPlayer)
203 uint32 bSentSplitJoin:1;
204
206 FOnControllerIdChanged& OnControllerIdChanged() const { return OnControllerIdChangedEvent; }
207
210 FOnPlatformUserIdChanged& OnPlatformUserIdChanged() { return OnPlatformUserIdChangedEvent; }
211
214 FOnPlayerControllerChanged& OnPlayerControllerChanged() { return OnPlayerControllerChangedEvent; }
215
217 bool bEmulateSplitscreen = false;
218
235 ENGINE_API void SetConnectionIdentifier(const int32 Id);
236
238 ENGINE_API int32 GetConnectionIdentifier() const;
239
240private:
242
244 UPROPERTY()
245 int32 ControllerId = INVALID_CONTROLLERID;
246
247 mutable FOnControllerIdChanged OnControllerIdChangedEvent;
248
249 int32 ConnectionIdentifier = 0;
250
252 FPlatformUserId PlatformUserId;
253
255 FOnPlatformUserIdChanged OnPlatformUserIdChangedEvent;
256
258 FOnPlayerControllerChanged OnPlayerControllerChangedEvent;
259
261
262public:
263 // UObject interface
264 static ENGINE_API void AddReferencedObjects(UObject* InThis, FReferenceCollector& Collector);
265 // End of UObject interface
266
267 // Begin UPlayer interface
268 ENGINE_API virtual void ReceivedPlayerController(APlayerController* NewController) override;
269 // End UPlayer interface
270
271 // FExec interface
272public:
273#if UE_ALLOW_EXEC_COMMANDS
274 ENGINE_API virtual bool Exec(UWorld* InWorld, const TCHAR* Cmd,FOutputDevice& Ar) override;
275#endif
276protected:
277 ENGINE_API virtual bool Exec_Editor(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) override;
278 // End of FExec interface
279
280public:
285 ENGINE_API bool HandleDNCommand( const TCHAR* Cmd, FOutputDevice& Ar );
286 ENGINE_API bool HandleExitCommand( const TCHAR* Cmd, FOutputDevice& Ar );
287 ENGINE_API bool HandleListMoveBodyCommand( const TCHAR* Cmd, FOutputDevice& Ar );
288 ENGINE_API bool HandleListAwakeBodiesCommand( const TCHAR* Cmd, FOutputDevice& Ar );
289 ENGINE_API bool HandleListSimBodiesCommand( const TCHAR* Cmd, FOutputDevice& Ar );
290 ENGINE_API bool HandleMoveComponentTimesCommand( const TCHAR* Cmd, FOutputDevice& Ar );
291 ENGINE_API bool HandleListSkelMeshesCommand( const TCHAR* Cmd, FOutputDevice& Ar );
292 ENGINE_API bool HandleListPawnComponentsCommand( const TCHAR* Cmd, FOutputDevice& Ar );
293 ENGINE_API bool HandleExecCommand( const TCHAR* Cmd, FOutputDevice& Ar );
294 ENGINE_API bool HandleToggleDrawEventsCommand( const TCHAR* Cmd, FOutputDevice& Ar );
295 ENGINE_API bool HandleToggleStreamingVolumesCommand( const TCHAR* Cmd, FOutputDevice& Ar );
296
297protected:
302 ENGINE_API virtual void GetViewPoint(FMinimalViewInfo& OutViewInfo) const;
303
305 ENGINE_API void ExecMacro( const TCHAR* Filename, FOutputDevice& Ar );
306
309
310public:
311
315 FReply& GetSlateOperations() { return SlateOperations; }
316 const FReply& GetSlateOperations() const { return SlateOperations; }
317
319 ENGINE_API virtual TSharedPtr<FSlateUser> GetSlateUser();
320 ENGINE_API virtual TSharedPtr<const FSlateUser> GetSlateUser() const;
321
327 ENGINE_API virtual UWorld* GetWorld() const override;
328
334 ENGINE_API UGameInstance* GetGameInstance() const;
335
341 ENGINE_API int32 GetIndexInGameInstance() const;
342
350
354 template <typename TSubsystemClass>
356 {
357 return SubsystemCollection.GetSubsystem<TSubsystemClass>(TSubsystemClass::StaticClass());
358 }
359
364 template <typename TSubsystemClass>
365 static inline TSubsystemClass* GetSubsystem(const ULocalPlayer* LocalPlayer)
366 {
367 if (LocalPlayer)
368 {
369 return LocalPlayer->GetSubsystem<TSubsystemClass>();
370 }
371 return nullptr;
372 }
373
378 template <typename TSubsystemClass>
380 {
381 if (PC)
382 {
383 const ULocalPlayer* LocalPlayer = PC->GetLocalPlayer();
384 return LocalPlayer ? LocalPlayer->GetSubsystem<TSubsystemClass>() : nullptr;
385 }
386 return nullptr;
387 }
388
392 template <typename TSubsystemClass>
394 {
395 return SubsystemCollection.GetSubsystemArrayCopy<TSubsystemClass>(TSubsystemClass::StaticClass());
396 }
397
401 template <typename TSubsystemClass>
402 void ForEachSubsystem(TFunctionRef<void(TSubsystemClass*)> Operation) const
403 {
404 static_assert(TIsDerivedFrom<TSubsystemClass, ULocalPlayerSubsystem>::IsDerived, "TSubsystemClass must be derived from ULocalPlayerSubsystem");
405 return SubsystemCollection.ForEachSubsystem([Operation=MoveTemp(Operation)](ULocalPlayerSubsystem* Subsystem){
406 Operation(CastChecked<TSubsystemClass>(Subsystem));
407 }, TSubsystemClass::StaticClass());
408 }
409
410
420 ENGINE_API virtual bool CalcSceneViewInitOptions(
422 FViewport* Viewport,
424 int32 StereoViewIndex = INDEX_NONE);
425
436 ENGINE_API virtual FSceneView* CalcSceneView(class FSceneViewFamily* ViewFamily,
439 FViewport* Viewport,
441 int32 StereoViewIndex = INDEX_NONE);
442
446 ENGINE_API virtual void PlayerAdded(class UGameViewportClient* InViewportClient, int32 InControllerID);
447
452
456 ENGINE_API virtual void InitOnlineSession();
457
461 ENGINE_API virtual void PlayerRemoved();
462
470 ENGINE_API virtual bool SpawnPlayActor(const FString& URL,FString& OutError, UWorld* InWorld);
471
473
478
489 ENGINE_API virtual void SendSplitJoin(TArray<FString>& Options);
490
497 ENGINE_API virtual void SendSplitJoin(TArray<FString>& Options, UNetDriver* NetDriver, UE::Net::EJoinFlags Flags);
498
505 ENGINE_API virtual void SetControllerId(int32 NewControllerId);
506
512 int32 GetControllerId() const { return ControllerId; }
513
517 ENGINE_API virtual void SetPlatformUserId(FPlatformUserId InPlatformUserId);
518
522 FPlatformUserId GetPlatformUserId() const { return PlatformUserId; }
523
528 ENGINE_API virtual int32 GetPlatformUserIndex() const;
529
535 ENGINE_API virtual int32 GetLocalPlayerIndex() const;
536
544 ENGINE_API virtual FString GetNickname() const;
545
554 virtual FString GetGameLoginOptions() const { return TEXT(""); }
555
556 // This should be deprecated when engine code has been changed to expect FPlatformUserId
557 // UE_DEPRECATED(5.x, "Use GetUniqueNetIdForPlatformUser instead")
558 ENGINE_API FUniqueNetIdRepl GetUniqueNetIdFromCachedControllerId() const;
559
565 ENGINE_API virtual FUniqueNetIdRepl GetUniqueNetIdForPlatformUser() const;
566
572 ENGINE_API FUniqueNetIdRepl GetCachedUniqueNetId() const;
573
575 ENGINE_API void SetCachedUniqueNetId(const FUniqueNetIdRepl& NewUniqueNetId);
576
582 ENGINE_API virtual FUniqueNetIdRepl GetPreferredUniqueNetId() const;
583
592 ENGINE_API bool GetPixelBoundingBox(const FBox& ActorBox, FVector2D& OutLowerLeft, FVector2D& OutUpperRight, const FVector2f* OptionalAllotedSize = nullptr);
593 static ENGINE_API bool GetPixelBoundingBox(const FSceneViewProjectionData& ProjectionData, const FBox& ActorBox, FVector2D& OutLowerLeft, FVector2D& OutUpperRight, const FVector2f* OptionalAllotedSize = nullptr);
594
602 ENGINE_API bool GetPixelPoint(const FVector& InPoint, FVector2D& OutPoint, const FVector2f* OptionalAllotedSize = nullptr);
603 static ENGINE_API bool GetPixelPoint(const FSceneViewProjectionData& ProjectionData, const FVector& InPoint, FVector2D& OutPoint, const FVector2f* OptionalAllotedSize = nullptr);
604
613 ENGINE_API virtual bool GetProjectionData(FViewport* Viewport, FSceneViewProjectionData& ProjectionData, int32 StereoViewIndex = INDEX_NONE) const;
614
619 ENGINE_API bool IsPrimaryPlayer() const;
620
624 ENGINE_API virtual void CleanupViewState(FStringView MidParentRootPath = {});
625
627 friend class FLockedViewState;
628};
629
#define NULL
Definition oodle2base.h:134
#define FORCEINLINE
Definition AndroidPlatform.h:140
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_EVENT_TwoParams(OwningType, EventName, Param1Type, Param2Type)
Definition DelegateCombinations.h:60
EAspectRatioAxisConstraint
Definition EngineTypes.h:38
OnComplete(MoveTemp(Response))
#define INVALID_CONTROLLERID
Definition LocalPlayer.h:26
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Size
Definition VulkanMemory.cpp:4034
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition GameStateBase.h:33
Definition PlayerController.h:261
Definition PlayerState.h:42
Definition Engine.Build.cs:7
Definition LocalPlayer.cpp:416
Definition SubsystemCollection.h:180
Definition OutputDevice.h:133
Definition UObjectGlobals.h:2492
Definition Reply.h:24
Definition SceneView.h:2212
Definition SceneView.h:1425
Definition SlateUser.h:41
Definition ObjectMacros.h:180
Definition SceneManagement.h:1280
Definition UnrealClient.h:412
Definition Array.h:670
Definition EnumAsByte.h:22
Definition AssetRegistryState.h:50
Definition SharedPointer.h:692
Definition SubclassOf.h:30
Definition GameInstance.h:152
Definition GameViewportClient.h:71
Definition LocalPlayerSubsystem.h:18
Definition LocalPlayer.h:169
FPlatformUserId GetPlatformUserId() const
Definition LocalPlayer.h:522
FReply & GetSlateOperations()
Definition LocalPlayer.h:315
FUniqueNetIdRepl CachedUniqueNetId
Definition LocalPlayer.h:178
int32 GetControllerId() const
Definition LocalPlayer.h:512
void ForEachSubsystem(TFunctionRef< void(TSubsystemClass *)> Operation) const
Definition LocalPlayer.h:402
TSubsystemClass * GetSubsystem() const
Definition LocalPlayer.h:355
virtual void PreBeginHandshake(const FOnPreBeginHandshakeCompleteDelegate &OnComplete)
Definition LocalPlayer.h:477
FOnPlayerControllerChanged & OnPlayerControllerChanged()
Definition LocalPlayer.h:214
const FReply & GetSlateOperations() const
Definition LocalPlayer.h:316
virtual FString GetGameLoginOptions() const
Definition LocalPlayer.h:554
DECLARE_DELEGATE(FOnPreBeginHandshakeCompleteDelegate)
FOnPlatformUserIdChanged & OnPlatformUserIdChanged()
Definition LocalPlayer.h:210
ULocalPlayerSubsystem * GetSubsystemBase(TSubclassOf< ULocalPlayerSubsystem > SubsystemClass) const
Definition LocalPlayer.h:346
TArray< TSubsystemClass * > GetSubsystemArrayCopy() const
Definition LocalPlayer.h:393
DECLARE_EVENT_OneParam(ULocalPlayer, FOnPlayerControllerChanged, APlayerController *)
FReply SlateOperations
Definition LocalPlayer.h:308
static TSubsystemClass * GetSubsystem(const ULocalPlayer *LocalPlayer)
Definition LocalPlayer.h:365
DECLARE_EVENT_TwoParams(ULocalPlayer, FOnPlatformUserIdChanged, FPlatformUserId, FPlatformUserId)
static FORCEINLINE TSubsystemClass * GetSubsystemFromController(const APlayerController *PC)
Definition LocalPlayer.h:379
Definition NetDriver.h:799
Definition Object.h:95
Definition Player.h:18
Definition World.h:918
@ NullAllowed
Definition Object.h:62
EJoinFlags
Definition NetEnums.h:12
Definition LocalPlayer.h:40
ENGINE_API bool IsFromLocalPlayer(const AActor *ActorToTest) const
Definition LocalPlayer.cpp:203
T * GetPlayerState(bool bCastChecked=false) const
Definition LocalPlayer.h:103
T * GetHUD(bool bCastChecked=false) const
Definition LocalPlayer.h:120
ENGINE_API class ULocalPlayer * GetLocalPlayer() const
Definition LocalPlayer.cpp:139
ENGINE_API FLocalPlayerContext()
Definition LocalPlayer.cpp:81
ENGINE_API bool IsInitialized() const
Definition LocalPlayer.cpp:113
T * GetPawn(bool bCastChecked=false) const
Definition LocalPlayer.h:137
ENGINE_API UWorld * GetWorld() const
Definition LocalPlayer.cpp:118
ENGINE_API class APlayerController * GetPlayerController() const
Definition LocalPlayer.cpp:146
ENGINE_API class AGameStateBase * GetGameState() const
Definition LocalPlayer.cpp:153
ENGINE_API UGameInstance * GetGameInstance() const
Definition LocalPlayer.cpp:129
ENGINE_API class AHUD * GetHUD() const
Definition LocalPlayer.cpp:179
T * GetPlayerController(bool bCastChecked=false) const
Definition LocalPlayer.h:69
T * GetGameState(bool bCastChecked=false) const
Definition LocalPlayer.h:86
ENGINE_API bool IsValid() const
Definition LocalPlayer.cpp:97
ENGINE_API class APlayerState * GetPlayerState() const
Definition LocalPlayer.cpp:173
ENGINE_API class APawn * GetPawn() const
Definition LocalPlayer.cpp:185
Definition CameraTypes.h:37
Definition CoreMiscDefines.h:470
Definition SceneView.h:180
Definition SceneView.h:51
Definition OnlineReplStructs.h:26
Definition UnrealTypeTraits.h:40
Definition ObjectPtr.h:488
Definition WeakObjectPtrTemplates.h:25