Move player camera manager implementation to blueprint

This commit is contained in:
2026-04-26 16:34:47 +08:00
parent 163092858c
commit 662184001d
5 changed files with 13 additions and 50 deletions

View File

@@ -1,19 +0,0 @@
// Copyright Epic Games, Inc. All Rights Reserved.
#include "Player/PHYPlayerCameraManager.h"
#include UE_INLINE_GENERATED_CPP_BY_NAME(PHYPlayerCameraManager)
#include "Player/PHYPlayerController.h"
FRotator APHYPlayerCameraManager::GetRotationInput_Implementation() const
{
const APHYPlayerController* PHYController = Cast<APHYPlayerController>(PCOwner);
return PHYController ? PHYController->GetCachedRotationInput() : FRotator::ZeroRotator;
}
FVector APHYPlayerCameraManager::GetMovementControlInput_Implementation() const
{
const APHYPlayerController* PHYController = Cast<APHYPlayerController>(PCOwner);
return PHYController ? PHYController->GetCachedMovementControlInput() : FVector::ZeroVector;
}

View File

@@ -5,10 +5,10 @@
#include UE_INLINE_GENERATED_CPP_BY_NAME(PHYPlayerController) #include UE_INLINE_GENERATED_CPP_BY_NAME(PHYPlayerController)
#include "Characters/PHYPlayerCharacter.h" #include "Characters/PHYPlayerCharacter.h"
#include "Characters/PHYCharacterSettings.h"
#include "GIPS_InputSystemComponent.h" #include "GIPS_InputSystemComponent.h"
#include "InputActionValue.h" #include "InputActionValue.h"
#include "Locomotion/PHYSLSMovementBridgeComponent.h" #include "Locomotion/PHYSLSMovementBridgeComponent.h"
#include "Player/PHYPlayerCameraManager.h"
#include "PHYGameplayTags.h" #include "PHYGameplayTags.h"
namespace namespace
@@ -41,7 +41,14 @@ namespace
APHYPlayerController::APHYPlayerController(const FObjectInitializer& ObjectInitializer) APHYPlayerController::APHYPlayerController(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer) : Super(ObjectInitializer)
{ {
PlayerCameraManagerClass = APHYPlayerCameraManager::StaticClass(); const UPHYCharacterSettings* CharacterSettings = GetDefault<UPHYCharacterSettings>();
if (CharacterSettings && !CharacterSettings->DefaultPlayerCameraManagerClass.IsNull())
{
if (UClass* CameraManagerClass = CharacterSettings->DefaultPlayerCameraManagerClass.LoadSynchronous())
{
PlayerCameraManagerClass = CameraManagerClass;
}
}
} }
void APHYPlayerController::BeginPlay() void APHYPlayerController::BeginPlay()

View File

@@ -9,9 +9,9 @@
class APHYAICharacter; class APHYAICharacter;
class APHYAIController; class APHYAIController;
class APHYPlayerCameraManager;
class APHYPlayerCharacter; class APHYPlayerCharacter;
class APHYPlayerController; class APHYPlayerController;
class APlayerCameraManager;
class UUGC_CameraDataAssetBase; class UUGC_CameraDataAssetBase;
/** /**
@@ -75,7 +75,7 @@ public:
/** @brief 玩家相机管理器默认软类引用。 */ /** @brief 玩家相机管理器默认软类引用。 */
UPROPERTY(Config, EditDefaultsOnly, Category="PHY|Character") UPROPERTY(Config, EditDefaultsOnly, Category="PHY|Character")
TSoftClassPtr<APHYPlayerCameraManager> DefaultPlayerCameraManagerClass; TSoftClassPtr<APlayerCameraManager> DefaultPlayerCameraManagerClass;
/** @brief UGC 默认 CameraData 软引用,首期不强制制作资产。 */ /** @brief UGC 默认 CameraData 软引用,首期不强制制作资产。 */
UPROPERTY(Config, EditDefaultsOnly, Category="PHY|Character") UPROPERTY(Config, EditDefaultsOnly, Category="PHY|Character")

View File

@@ -1,25 +0,0 @@
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Camera/UGC_PlayerCameraManager.h"
#include "PHYPlayerCameraManager.generated.h"
/**
* @brief PHY 玩家相机管理器。
*
* 该类型从 PlayerController 的 C++ 缓存读取输入,不把 UGC 蓝图 Pawn Interface 作为主路径。
*/
UCLASS(BlueprintType, Blueprintable)
class PHY_API APHYPlayerCameraManager : public AUGC_PlayerCameraManager
{
GENERATED_BODY()
public:
/** @brief 返回玩家视角输入。 */
virtual FRotator GetRotationInput_Implementation() const override;
/** @brief 返回玩家移动控制输入。 */
virtual FVector GetMovementControlInput_Implementation() const override;
};