80 lines
2.0 KiB
C++
80 lines
2.0 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "CommonLocalPlayer.h"
|
|
|
|
#include "Engine/GameInstance.h"
|
|
#include "GameFramework/PlayerController.h"
|
|
#include "GameUIManagerSubsystem.h"
|
|
#include "GameUIPolicy.h"
|
|
#include "UObject/ObjectPtr.h"
|
|
|
|
class APawn;
|
|
class APlayerState;
|
|
class FViewport;
|
|
struct FSceneViewProjectionData;
|
|
|
|
UCommonLocalPlayer::UCommonLocalPlayer()
|
|
: Super(FObjectInitializer::Get())
|
|
{
|
|
}
|
|
|
|
FDelegateHandle UCommonLocalPlayer::CallAndRegister_OnPlayerControllerSet(FPlayerControllerSetDelegate::FDelegate Delegate)
|
|
{
|
|
APlayerController* PC = GetPlayerController(GetWorld());
|
|
|
|
if (PC)
|
|
{
|
|
Delegate.Execute(this, PC);
|
|
}
|
|
|
|
return OnPlayerControllerSet.Add(Delegate);
|
|
}
|
|
|
|
FDelegateHandle UCommonLocalPlayer::CallAndRegister_OnPlayerStateSet(FPlayerStateSetDelegate::FDelegate Delegate)
|
|
{
|
|
APlayerController* PC = GetPlayerController(GetWorld());
|
|
APlayerState* PlayerState = PC ? PC->PlayerState : nullptr;
|
|
|
|
if (PlayerState)
|
|
{
|
|
Delegate.Execute(this, PlayerState);
|
|
}
|
|
|
|
return OnPlayerStateSet.Add(Delegate);
|
|
}
|
|
|
|
FDelegateHandle UCommonLocalPlayer::CallAndRegister_OnPlayerPawnSet(FPlayerPawnSetDelegate::FDelegate Delegate)
|
|
{
|
|
APlayerController* PC = GetPlayerController(GetWorld());
|
|
APawn* Pawn = PC ? PC->GetPawn() : nullptr;
|
|
|
|
if (Pawn)
|
|
{
|
|
Delegate.Execute(this, Pawn);
|
|
}
|
|
|
|
return OnPlayerPawnSet.Add(Delegate);
|
|
}
|
|
|
|
bool UCommonLocalPlayer::GetProjectionData(FViewport* Viewport, FSceneViewProjectionData& ProjectionData, int32 StereoViewIndex) const
|
|
{
|
|
if (!bIsPlayerViewEnabled)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return Super::GetProjectionData(Viewport, ProjectionData, StereoViewIndex);
|
|
}
|
|
|
|
UPrimaryGameLayout* UCommonLocalPlayer::GetRootUILayout() const
|
|
{
|
|
if (UGameUIManagerSubsystem* UIManager = GetGameInstance()->GetSubsystem<UGameUIManagerSubsystem>())
|
|
{
|
|
if (UGameUIPolicy* Policy = UIManager->GetCurrentUIPolicy())
|
|
{
|
|
return Policy->GetRootLayout(this);
|
|
}
|
|
}
|
|
|
|
return nullptr;
|
|
} |