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