RealtimeStyleTransferRuntime/Plugins/CommonGame/Source/Private/CommonLocalPlayer.cpp

72 lines
1.8 KiB
C++
Raw Normal View History

2022-05-23 18:41:30 +00:00
// Copyright Epic Games, Inc. All Rights Reserved.
#include "CommonLocalPlayer.h"
#include "GameUIManagerSubsystem.h"
#include "GameUIPolicy.h"
#include "GameFramework/PlayerController.h"
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;
}