Fix class visual mesh initialization
This commit is contained in:
@@ -4,7 +4,7 @@ DefaultAIClassTag=(TagName="Class.Saber")
|
||||
bApplyPlayerClassMeshToPlayers=True
|
||||
bApplyPlayerClassMeshToAI=False
|
||||
!PlayerClassMeshes=ClearArray
|
||||
+PlayerClassMeshes=(ClassTag=(TagName="Class.Saber"),PlayerMesh=None,PlayerRetargeter=)
|
||||
+PlayerClassMeshes=(ClassTag=(TagName="Class.Saber"),PlayerMesh="/Game/AGame/Character/Ida/SK_MMO_ADVANCED_F_01_AGame.SK_MMO_ADVANCED_F_01_AGame",PlayerRetargeter="/Game/AGame/Animation/Retargeters/RTG_Manny_To_Ida.RTG_Manny_To_Ida")
|
||||
+PlayerClassMeshes=(ClassTag=(TagName="Class.Lancer"),PlayerMesh=None,PlayerRetargeter=)
|
||||
+PlayerClassMeshes=(ClassTag=(TagName="Class.Archer"),PlayerMesh=None,PlayerRetargeter=)
|
||||
+PlayerClassMeshes=(ClassTag=(TagName="Class.Rider"),PlayerMesh=None,PlayerRetargeter=)
|
||||
|
||||
@@ -36,7 +36,10 @@ void UPHYCharacterMeshBridgeComponent::InitializeMeshBridge(ACharacter* Characte
|
||||
ApplySourceDefaults();
|
||||
|
||||
const UPHYAnimationSettings* Settings = GetDefault<UPHYAnimationSettings>();
|
||||
CurrentRetargeter = Settings ? Settings->DefaultIKRetargeter : FSoftObjectPath();
|
||||
if (!CurrentRetargeter.IsValid())
|
||||
{
|
||||
CurrentRetargeter = Settings ? Settings->DefaultIKRetargeter : FSoftObjectPath();
|
||||
}
|
||||
|
||||
if (Settings)
|
||||
{
|
||||
|
||||
@@ -91,16 +91,21 @@ void APHYCharacterBase::PreInitializeComponents()
|
||||
UGameFrameworkComponentManager::AddGameFrameworkComponentReceiver(this);
|
||||
}
|
||||
|
||||
void APHYCharacterBase::BeginPlay()
|
||||
void APHYCharacterBase::PostInitializeComponents()
|
||||
{
|
||||
Super::BeginPlay();
|
||||
|
||||
ApplyCharacterSettings();
|
||||
Super::PostInitializeComponents();
|
||||
|
||||
if (MeshBridgeComponent)
|
||||
{
|
||||
MeshBridgeComponent->InitializeMeshBridge(this, DisplayMeshComponent);
|
||||
}
|
||||
}
|
||||
|
||||
void APHYCharacterBase::BeginPlay()
|
||||
{
|
||||
Super::BeginPlay();
|
||||
|
||||
ApplyCharacterSettings();
|
||||
|
||||
if (RagdollComponent)
|
||||
{
|
||||
|
||||
@@ -133,7 +133,13 @@ bool UPHYClassComponent::ApplyConfiguredPlayerMeshIfAllowed(AActor* AvatarActor)
|
||||
|
||||
const FSoftObjectPath PlayerRetargeter = GetConfiguredPlayerRetargeter();
|
||||
UPHYCharacterMeshBridgeComponent* MeshBridge = Character->GetMeshBridgeComponent();
|
||||
return MeshBridge ? MeshBridge->ApplyDisplayMesh(PlayerMesh, nullptr, PlayerRetargeter) : false;
|
||||
if (!MeshBridge)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
MeshBridge->InitializeMeshBridge(Character, Character->GetDisplayMeshComponent());
|
||||
return MeshBridge->ApplyDisplayMesh(PlayerMesh, nullptr, PlayerRetargeter);
|
||||
}
|
||||
|
||||
bool UPHYClassComponent::ApplyClassAttributesToAbilitySystem(UAbilitySystemComponent* AbilitySystemComponent) const
|
||||
|
||||
@@ -41,6 +41,9 @@ public:
|
||||
/** @brief 注册 ModularGameplay 组件接收者。 */
|
||||
virtual void PreInitializeComponents() override;
|
||||
|
||||
/** @brief 在 Possess 和 PlayerState 初始化前绑定显示层 Mesh 桥接组件。 */
|
||||
virtual void PostInitializeComponents() override;
|
||||
|
||||
/** @brief 初始化角色运行时组件。 */
|
||||
virtual void BeginPlay() override;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user