From 662184001d2ea85e6453a37ebf0705075acb4a2e Mon Sep 17 00:00:00 2001 From: cit110 <840418418@qq.com> Date: Sun, 26 Apr 2026 16:34:47 +0800 Subject: [PATCH] Move player camera manager implementation to blueprint --- .../Player/BP_PHYPlayerCameraManager.uasset | 4 +-- .../Private/Player/PHYPlayerCameraManager.cpp | 19 -------------- .../Private/Player/PHYPlayerController.cpp | 11 ++++++-- .../Public/Characters/PHYCharacterSettings.h | 4 +-- .../Public/Player/PHYPlayerCameraManager.h | 25 ------------------- 5 files changed, 13 insertions(+), 50 deletions(-) delete mode 100644 Source/PHY/Private/Player/PHYPlayerCameraManager.cpp delete mode 100644 Source/PHY/Public/Player/PHYPlayerCameraManager.h diff --git a/Content/AGame/Gameplay/Player/BP_PHYPlayerCameraManager.uasset b/Content/AGame/Gameplay/Player/BP_PHYPlayerCameraManager.uasset index ca710b3..acddc65 100644 --- a/Content/AGame/Gameplay/Player/BP_PHYPlayerCameraManager.uasset +++ b/Content/AGame/Gameplay/Player/BP_PHYPlayerCameraManager.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f1371c68494ea1e9e44b8f626b4599c4900d3c338d715a757b07994f21034fa -size 23937 +oid sha256:8f9a9c2cac42927de0f558dd9fca30b4c22fac5539d555c1af7e9cd1be53f941 +size 23820 diff --git a/Source/PHY/Private/Player/PHYPlayerCameraManager.cpp b/Source/PHY/Private/Player/PHYPlayerCameraManager.cpp deleted file mode 100644 index d300ca3..0000000 --- a/Source/PHY/Private/Player/PHYPlayerCameraManager.cpp +++ /dev/null @@ -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(PCOwner); - return PHYController ? PHYController->GetCachedRotationInput() : FRotator::ZeroRotator; -} - -FVector APHYPlayerCameraManager::GetMovementControlInput_Implementation() const -{ - const APHYPlayerController* PHYController = Cast(PCOwner); - return PHYController ? PHYController->GetCachedMovementControlInput() : FVector::ZeroVector; -} diff --git a/Source/PHY/Private/Player/PHYPlayerController.cpp b/Source/PHY/Private/Player/PHYPlayerController.cpp index 01d5b7a..e3416db 100644 --- a/Source/PHY/Private/Player/PHYPlayerController.cpp +++ b/Source/PHY/Private/Player/PHYPlayerController.cpp @@ -5,10 +5,10 @@ #include UE_INLINE_GENERATED_CPP_BY_NAME(PHYPlayerController) #include "Characters/PHYPlayerCharacter.h" +#include "Characters/PHYCharacterSettings.h" #include "GIPS_InputSystemComponent.h" #include "InputActionValue.h" #include "Locomotion/PHYSLSMovementBridgeComponent.h" -#include "Player/PHYPlayerCameraManager.h" #include "PHYGameplayTags.h" namespace @@ -41,7 +41,14 @@ namespace APHYPlayerController::APHYPlayerController(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { - PlayerCameraManagerClass = APHYPlayerCameraManager::StaticClass(); + const UPHYCharacterSettings* CharacterSettings = GetDefault(); + if (CharacterSettings && !CharacterSettings->DefaultPlayerCameraManagerClass.IsNull()) + { + if (UClass* CameraManagerClass = CharacterSettings->DefaultPlayerCameraManagerClass.LoadSynchronous()) + { + PlayerCameraManagerClass = CameraManagerClass; + } + } } void APHYPlayerController::BeginPlay() diff --git a/Source/PHY/Public/Characters/PHYCharacterSettings.h b/Source/PHY/Public/Characters/PHYCharacterSettings.h index 9c75192..c3285f9 100644 --- a/Source/PHY/Public/Characters/PHYCharacterSettings.h +++ b/Source/PHY/Public/Characters/PHYCharacterSettings.h @@ -9,9 +9,9 @@ class APHYAICharacter; class APHYAIController; -class APHYPlayerCameraManager; class APHYPlayerCharacter; class APHYPlayerController; +class APlayerCameraManager; class UUGC_CameraDataAssetBase; /** @@ -75,7 +75,7 @@ public: /** @brief 玩家相机管理器默认软类引用。 */ UPROPERTY(Config, EditDefaultsOnly, Category="PHY|Character") - TSoftClassPtr DefaultPlayerCameraManagerClass; + TSoftClassPtr DefaultPlayerCameraManagerClass; /** @brief UGC 默认 CameraData 软引用,首期不强制制作资产。 */ UPROPERTY(Config, EditDefaultsOnly, Category="PHY|Character") diff --git a/Source/PHY/Public/Player/PHYPlayerCameraManager.h b/Source/PHY/Public/Player/PHYPlayerCameraManager.h deleted file mode 100644 index fb62c3f..0000000 --- a/Source/PHY/Public/Player/PHYPlayerCameraManager.h +++ /dev/null @@ -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; -};