Fix character base header comments

This commit is contained in:
2026-04-26 19:10:08 +08:00
parent 6ca0f21163
commit 2ae207533c

View File

@@ -24,261 +24,326 @@ class USLSCharacterMovementComponent;
class USLSIntegrationComponent; class USLSIntegrationComponent;
/** /**
* @brief PHY <EFBFBD>拙振<EFBFBD>?AI <20>梁鍂閫坿𠧧<E59DBF>箇掩<E7AE87>? * * @brief PHY 玩家和 AI 共用的角色基类。
* <20>箇掩<E7AE87>湔𦻖蝏扳㗁 ACharacter嚗<72><EFBFBD><EFBFBD>憿寧𤌍蝥抒<E89DA5>隞嗅<E99A9E><E59785>亙藁<E4BA99><E89781><EFBFBD> GAS<41><53>CS<43><53>GS<47><53>GC 銝𤾸<E98A9D>蝏剛<E89D8F><E5899B>函頂蝏麄<E89D8F>? */ *
* 基类直接继承 ACharacter并通过项目级组件和接口适配 GAS、GCS、GGS、
* UGC 与 Smooth Locomotion 等系统。
*/
UCLASS(Abstract, BlueprintType, Blueprintable) UCLASS(Abstract, BlueprintType, Blueprintable)
class PHY_API APHYCharacterBase : public ACharacter, public IAbilitySystemInterface, public IGameplayTagAssetInterface, public IGCS_CombatEntityInterface class PHY_API APHYCharacterBase : public ACharacter, public IAbilitySystemInterface, public IGameplayTagAssetInterface, public IGCS_CombatEntityInterface
{ {
GENERATED_BODY() GENERATED_BODY()
public: public:
/** @brief <EFBFBD><EFBFBD><EFBFBD>惩抅蝖<EFBFBD>閫坿𠧧蝏<EFBFBD><EFBFBD>?*/ /** @brief 创建角色基类并挂载项目核心组件。 */
APHYCharacterBase(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); APHYCharacterBase(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
/** @brief 瘜典<EFBFBD> ModularGameplay <EFBFBD><EFBFBD>交𤣰<EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 注册 ModularGameplay 组件接收者。 */
virtual void PreInitializeComponents() override; virtual void PreInitializeComponents() override;
/** @brief <EFBFBD>?Possess <EFBFBD>?PlayerState <EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝏穃<EFBFBD><EFBFBD>曄內撅?Mesh 獢交𦻖蝏<F0A6BB96><EFBFBD>?*/ /** @brief Possess PlayerState 初始化前绑定显示 Mesh 桥接组件。 */
virtual void PostInitializeComponents() override; virtual void PostInitializeComponents() override;
/** @brief <EFBFBD><EFBFBD><EFBFBD>𤥁<EFBFBD><EFBFBD><EFBFBD>銵峕𧒄蝏<EFBFBD><EFBFBD>?*/ /** @brief 初始化角色运行时状态和组件。 */
virtual void BeginPlay() override; virtual void BeginPlay() override;
/** @brief 蝘駁膄 ModularGameplay <EFBFBD><EFBFBD>交𤣰<EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 移除 ModularGameplay 组件接收者。 */
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
/** @brief <EFBFBD><EFBFBD><EFBFBD>冽𦻖蝞⊥𧒄<EFBFBD>瑟鰵憿寧𤌍<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 控制器接管角色时刷新项目状态。 */
virtual void PossessedBy(AController* NewController) override; virtual void PossessedBy(AController* NewController) override;
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝡臬<EFBFBD><EFBFBD>瑟鰵憿寧𤌍<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 控制器复制到客户端后刷新项目状态。 */
virtual void OnRep_Controller() override; virtual void OnRep_Controller() override;
/** @brief <EFBFBD><EFBFBD>敶枏<EFBFBD>閫坿𠧧雿輻鍂<EFBFBD>?AbilitySystemComponent<EFBFBD>?*/ /** @brief 获取当前角色使用的 AbilitySystemComponent*/
virtual UAbilitySystemComponent* GetAbilitySystemComponent() const override; virtual UAbilitySystemComponent* GetAbilitySystemComponent() const override;
/** @brief <EFBFBD><EFBFBD> ASC 銝舘<EFBFBD><EFBFBD>脩𠶖<EFBFBD><EFBFBD><EFBFBD>隞嗆<EFBFBD>靘𤤿<EFBFBD> GameplayTag<EFBFBD>?*/ /** @brief 收集 ASC 与角色状态组件提供的 GameplayTag*/
virtual void GetOwnedGameplayTags(FGameplayTagContainer& TagContainer) const override; virtual void GetOwnedGameplayTags(FGameplayTagContainer& TagContainer) const override;
/** @brief <20><EFBFBD><E598A5><EFBFBD><E7A18B>?Avatar 撖孵<E69296><E5ADB5>?ASC<53>?*/ /**
* @brief 初始化当前 Avatar 对应的 ASC。
* @param NewAbilitySystemComponent 要绑定到该角色的 ASC。
* @param OwnerActor ASC 的 OwnerActor玩家通常为 PlayerStateAI 通常为自身。
*/
UFUNCTION(BlueprintCallable, Category="PHY|Character|Ability") UFUNCTION(BlueprintCallable, Category="PHY|Character|Ability")
virtual void InitializeAbilitySystem(UAbilitySystemComponent* NewAbilitySystemComponent, AActor* OwnerActor); virtual void InitializeAbilitySystem(UAbilitySystemComponent* NewAbilitySystemComponent, AActor* OwnerActor);
/** @brief <EFBFBD><EFBFBD>閫坿𠧧蝻枏<EFBFBD><EFBFBD>?ASC 撘閧鍂<E996A7>?*/ /** @brief 清理角色缓存的 ASC 引用。 */
UFUNCTION(BlueprintCallable, Category="PHY|Character|Ability") UFUNCTION(BlueprintCallable, Category="PHY|Character|Ability")
virtual void ClearAbilitySystem(); virtual void ClearAbilitySystem();
/** @brief <EFBFBD>亥砭 ASC <EFBFBD>臬炏撌脩<EFBFBD>摰峕<EFBFBD>憿寧𤌍蝥批<EFBFBD>憪见<EFBFBD><EFBFBD>?*/ /** @brief 查询 ASC 是否已经完成项目级初始化。 */
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character|Ability") UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character|Ability")
bool IsAbilitySystemReady() const { return bAbilitySystemReady; } bool IsAbilitySystemReady() const { return bAbilitySystemReady; }
/** @brief <20>交𤣰颲枏<E9A2B2> Tag 撟嗉楝<E59789><EFBFBD>蝘餃𢆡<E9A483><F0A286A1>漱鈭埝<E988AD> GAS Ability<74>?*/ /**
* @brief 接收输入 Tag 并路由到移动、交互或 GAS Ability。
* @param InputTag 输入系统派发的 GameplayTag。
* @param TriggerEvent Enhanced Input 触发事件。
* @return 成功处理时返回 true。
*/
UFUNCTION(BlueprintCallable, Category="PHY|Character|Input") UFUNCTION(BlueprintCallable, Category="PHY|Character|Input")
virtual bool HandleInputTag(FGameplayTag InputTag, ETriggerEvent TriggerEvent); virtual bool HandleInputTag(FGameplayTag InputTag, ETriggerEvent TriggerEvent);
/** @brief 霈曄蔭蝘餃𢆡<E9A483>誩㦛嚗<E3A69B><EFBFBD>典恥<E585B8>瑞垢霂瑟<E99C82><E7919F>滚𦛚蝡臬<E89DA1>甇乓<E79487>?*/ /**
* @brief 设置角色移动意图,并在客户端请求服务端同步。
* @param NewMovementIntent 世界空间移动意图。
*/
UFUNCTION(BlueprintCallable, Category="PHY|Character|Movement") UFUNCTION(BlueprintCallable, Category="PHY|Character|Movement")
virtual void SetMovementIntent(FVector NewMovementIntent); virtual void SetMovementIntent(FVector NewMovementIntent);
/** @brief 霈曄蔭憿寧𤌍蝥扳<E89DA5><E689B3>㛖𤌍<E39B96><F0A48C8D><EFBFBD>?*/ /**
* @brief 设置项目级战斗目标。
* @param NewCombatTargetActor 新的战斗目标 Actor。
*/
UFUNCTION(BlueprintCallable, Category="PHY|Character|Combat") UFUNCTION(BlueprintCallable, Category="PHY|Character|Combat")
virtual void SetCombatTargetActor(AActor* NewCombatTargetActor); virtual void SetCombatTargetActor(AActor* NewCombatTargetActor);
/** @brief 霂瑟<E99C82><EFBFBD>憪衤漱鈭鉝<E988AD>?*/ /**
* @brief 请求开始交互。
* @param OptionIndex 交互选项索引。
* @return 交互请求被接受时返回 true。
*/
UFUNCTION(BlueprintCallable, Category="PHY|Character|Interaction") UFUNCTION(BlueprintCallable, Category="PHY|Character|Interaction")
virtual bool RequestInteraction(int32 OptionIndex = 0); virtual bool RequestInteraction(int32 OptionIndex = 0);
/** @brief 霂瑟<E99C82><EFBFBD>甈⊥<E79488>批朖<E689B9>嗡漱鈭鉝<E988AD>?*/ /**
* @brief 请求执行一次即时交互。
* @param OptionIndex 交互选项索引。
* @return 交互请求被接受时返回 true。
*/
UFUNCTION(BlueprintCallable, Category="PHY|Character|Interaction") UFUNCTION(BlueprintCallable, Category="PHY|Character|Interaction")
virtual bool RequestInstantInteraction(int32 OptionIndex = 0); virtual bool RequestInstantInteraction(int32 OptionIndex = 0);
/** @brief 霂瑟<EFBFBD>蝏𤘪<EFBFBD>敶枏<EFBFBD>鈭支<EFBFBD><EFBFBD>?*/ /** @brief 请求结束当前交互。 */
UFUNCTION(BlueprintCallable, Category="PHY|Character|Interaction") UFUNCTION(BlueprintCallable, Category="PHY|Character|Interaction")
virtual void EndInteraction(); virtual void EndInteraction();
/** @brief 霂瑟<E99C82><E7919F><EFBFBD>揢敶枏<E695B6><E69E8F>臭漱鈭鍦笆鞊<E99E8A>?*/ /**
* @brief 请求切换当前可交互目标。
* @param bNext 为 true 时切到下一个目标,否则切到上一个目标。
*/
UFUNCTION(BlueprintCallable, Category="PHY|Character|Interaction") UFUNCTION(BlueprintCallable, Category="PHY|Character|Interaction")
virtual void CycleInteractionTarget(bool bNext); virtual void CycleInteractionTarget(bool bNext);
/** @brief 获取角色状态组件。 */
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character") UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character")
UPHYCharacterStateComponent* GetCharacterStateComponent() const { return CharacterStateComponent; } UPHYCharacterStateComponent* GetCharacterStateComponent() const { return CharacterStateComponent; }
/** @brief <EFBFBD><EFBFBD> GCS <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 获取 GCS 战斗系统组件。 */
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character") UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character")
UGCS_CombatSystemComponent* GetCombatSystemComponent() const { return CombatSystemComponent; } UGCS_CombatSystemComponent* GetCombatSystemComponent() const { return CombatSystemComponent; }
/** @brief <EFBFBD><EFBFBD> GCS <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 获取 GCS 目标系统组件。 */
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character") UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character")
UGCS_TargetingSystemComponent* GetTargetingSystemComponent() const { return TargetingSystemComponent; } UGCS_TargetingSystemComponent* GetTargetingSystemComponent() const { return TargetingSystemComponent; }
/** @brief <EFBFBD><EFBFBD> GGS 鈭支<EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 获取 GGS 交互系统组件。 */
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character") UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character")
UGGS_InteractionSystemComponent* GetInteractionSystemComponent() const { return InteractionSystemComponent; } UGGS_InteractionSystemComponent* GetInteractionSystemComponent() const { return InteractionSystemComponent; }
/** @brief <EFBFBD><EFBFBD> GGS <EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞嗚<EFBFBD>?*/ /** @brief 获取 GGS 布娃娃组件。 */
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character") UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character")
UGGS_RagdollComponent* GetRagdollComponent() const { return RagdollComponent; } UGGS_RagdollComponent* GetRagdollComponent() const { return RagdollComponent; }
/** @brief <EFBFBD><EFBFBD>銝𠹺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𦦵<EFBFBD>隞嗚<EFBFBD>?*/ /** @brief 获取 GES 上下文效果组件。 */
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character") UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character")
UGES_ContextEffectComponent* GetContextEffectComponent() const { return ContextEffectComponent; } UGES_ContextEffectComponent* GetContextEffectComponent() const { return ContextEffectComponent; }
/** @brief <EFBFBD><EFBFBD>閫坿𠧧 Mesh Bridge <EFBFBD><EFBFBD>?*/ /** @brief 获取角色 Mesh Bridge 组件。 */
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character|Animation") UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character|Animation")
UPHYCharacterMeshBridgeComponent* GetMeshBridgeComponent() const { return MeshBridgeComponent; } UPHYCharacterMeshBridgeComponent* GetMeshBridgeComponent() const { return MeshBridgeComponent; }
/** @brief <EFBFBD><EFBFBD> SLS 閫坿𠧧餈𣂼𢆡蝏<EFBFBD><EFBFBD>?*/ /** @brief 获取 SLS 角色移动组件。 */
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character|Locomotion") UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character|Locomotion")
USLSCharacterMovementComponent* GetSLSCharacterMovementComponent() const; USLSCharacterMovementComponent* GetSLSCharacterMovementComponent() const;
/** @brief <EFBFBD><EFBFBD> SLS <EFBFBD><EFBFBD><EFBFBD><EFBFBD>亙藁蝏<EFBFBD><EFBFBD>?*/ /** @brief 获取 SLS 集成入口组件。 */
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character|Locomotion") UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character|Locomotion")
USLSIntegrationComponent* GetSLSIntegrationComponent() const { return SLSIntegrationComponent; } USLSIntegrationComponent* GetSLSIntegrationComponent() const { return SLSIntegrationComponent; }
/** @brief <EFBFBD><EFBFBD> GenericGameSystem <EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞嗚<EFBFBD>?*/ /** @brief 获取 GenericGameSystem 可选集成入口组件。 */
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character|Locomotion") UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character|Locomotion")
UActorComponent* GetGenericIntegrationComponent() const { return GenericIntegrationComponent; } UActorComponent* GetGenericIntegrationComponent() const { return GenericIntegrationComponent; }
/** @brief <EFBFBD><EFBFBD><EFBFBD>曄內撅?Mesh 蝏<>辣嚗諹<E59A97>銝𡁜<E98A9D>憭𤥁<E686AD> Mesh 摨𥪜<E691A8><F0A5AA9C><EFBFBD>霂亦<E99C82>隞嗚<E99A9E>?*/ /** @brief 获取显示层 Mesh 组件,职业和外观 Mesh 应当应用到该组件。 */
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character|Animation") UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Character|Animation")
USkeletalMeshComponent* GetDisplayMeshComponent() const { return DisplayMeshComponent; } USkeletalMeshComponent* GetDisplayMeshComponent() const { return DisplayMeshComponent; }
/** @brief <EFBFBD><EFBFBD>敶枏<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Actor<EFBFBD>?*/ /** @brief 获取当前战斗目标 Actor*/
virtual AActor* GetCombatTargetActor_Implementation() const override; virtual AActor* GetCombatTargetActor_Implementation() const override;
/** @brief <EFBFBD><EFBFBD>餈𧼮稬摰帋<EFBFBD>銵剁<EFBFBD>擐𡝗<EFBFBD>撉冽沲暺䁅恕銝滨<EFBFBD>摰朞”<EFBFBD>?*/ /** @brief 获取连击定义表,首期骨架默认不绑定表。 */
virtual const UDataTable* GetComboDefinitionTable_Implementation() const override; virtual const UDataTable* GetComboDefinitionTable_Implementation() const override;
/** @brief <EFBFBD><EFBFBD>敶枏<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>箸艶撖寡情<EFBFBD>?*/ /** @brief 获取当前战斗目标场景对象。 */
virtual USceneComponent* GetCombatTargetObject_Implementation() const override; virtual USceneComponent* GetCombatTargetObject_Implementation() const override;
/** @brief <20>亥砭<E4BAA5><EFBFBD><E8B3A2><EFBFBD>嚗屸<E59A97><E5B1B8>罸爸<E7BDB8><EFBFBD>霈方<E99C88><E696B9>䂿征<E482BF>?*/ /**
* @brief 查询可用 Ability 动作,首期骨架默认返回空。
* @param AbilityTags 能力标签集合。
* @param SourceTags 来源标签集合。
* @param TargetTags 目标标签集合。
* @param AbilityActions 输出的能力动作列表。
* @return 找到可用动作时返回 true。
*/
virtual bool QueryAbilityActions_Implementation(FGameplayTagContainer AbilityTags, FGameplayTagContainer SourceTags, FGameplayTagContainer TargetTags, TArray<FGCS_AbilityAction>& AbilityActions) override; virtual bool QueryAbilityActions_Implementation(FGameplayTagContainer AbilityTags, FGameplayTagContainer SourceTags, FGameplayTagContainer TargetTags, TArray<FGCS_AbilityAction>& AbilityActions) override;
/** @brief <20><EFBFBD>銝𧢲<E98A9D><F0A7A2B2>亥砭<E4BAA5><EFBFBD><E8B3A2><EFBFBD>嚗屸<E59A97><E5B1B8>罸爸<E7BDB8><EFBFBD>霈方<E99C88><E696B9>䂿征<E482BF>?*/ /**
* @brief 按上下文查询可用 Ability 动作,首期骨架默认返回空。
* @param Context 查询上下文对象。
* @param AbilityTags 能力标签集合。
* @param SourceTags 来源标签集合。
* @param TargetTags 目标标签集合。
* @param AbilityActions 输出的能力动作列表。
* @return 找到可用动作时返回 true。
*/
virtual bool QueryAbilityActionsByContext_Implementation(UObject* Context, FGameplayTagContainer AbilityTags, FGameplayTagContainer SourceTags, FGameplayTagContainer TargetTags, TArray<FGCS_AbilityAction>& AbilityActions) override; virtual bool QueryAbilityActionsByContext_Implementation(UObject* Context, FGameplayTagContainer AbilityTags, FGameplayTagContainer SourceTags, FGameplayTagContainer TargetTags, TArray<FGCS_AbilityAction>& AbilityActions) override;
/** @brief <20>?Tag <20>亥砭敶枏<E695B6>甇血膥<E8A180>?*/ /**
* @brief 按 Tag 查询当前武器。
* @param Query 用于匹配武器标签的查询。
* @return 匹配到的武器对象。
*/
virtual UObject* QueryWeapon_Implementation(const FGameplayTagQuery& Query) const override; virtual UObject* QueryWeapon_Implementation(const FGameplayTagQuery& Query) const override;
/** @brief 霈曄蔭<EFBFBD>贝蓮璅<EFBFBD><EFBFBD>?*/ /** @brief 设置旋转模式。 */
virtual void SetRotationMode_Implementation(FGameplayTag NewRotationMode) override; virtual void SetRotationMode_Implementation(FGameplayTag NewRotationMode) override;
/** @brief <EFBFBD><EFBFBD><EFBFBD>贝蓮璅<EFBFBD><EFBFBD>?*/ /** @brief 获取旋转模式。 */
virtual FGameplayTag GetRotationMode_Implementation() const override; virtual FGameplayTag GetRotationMode_Implementation() const override;
/** @brief 霈曄蔭蝘餃𢆡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 设置移动集合。 */
virtual void SetMovementSet_Implementation(FGameplayTag NewMovementSet) override; virtual void SetMovementSet_Implementation(FGameplayTag NewMovementSet) override;
/** @brief <EFBFBD><EFBFBD>蝘餃𢆡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 获取移动集合。 */
virtual FGameplayTag GetMovementSet_Implementation() const override; virtual FGameplayTag GetMovementSet_Implementation() const override;
/** @brief 霈曄蔭蝘餃𢆡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 设置移动状态。 */
virtual void SetMovementState_Implementation(FGameplayTag NewMovementState) override; virtual void SetMovementState_Implementation(FGameplayTag NewMovementState) override;
/** @brief <EFBFBD><EFBFBD>蝘餃𢆡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 获取移动状态。 */
virtual FGameplayTag GetMovementState_Implementation() const override; virtual FGameplayTag GetMovementState_Implementation() const override;
/** @brief <EFBFBD>憪𧢲香鈭⊥<EFBFBD>蝔卝<EFBFBD>?*/ /** @brief 开始死亡流程。 */
virtual void StartDeath_Implementation() override; virtual void StartDeath_Implementation() override;
/** @brief 摰峕<EFBFBD>甇颱滿瘚<EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 完成死亡流程。 */
virtual void FinishDeath_Implementation() override; virtual void FinishDeath_Implementation() override;
/** @brief <EFBFBD>亥砭閫坿𠧧<EFBFBD>臬炏甇颱滿<EFBFBD>?*/ /** @brief 查询角色是否死亡。 */
virtual bool IsDead_Implementation() const override; virtual bool IsDead_Implementation() const override;
/** @brief <EFBFBD><EFBFBD>蝘餃𢆡<EFBFBD>誩㦛<EFBFBD>?*/ /** @brief 获取移动意图。 */
virtual FVector GetMovementIntent_Implementation() const override; virtual FVector GetMovementIntent_Implementation() const override;
/** @brief <20><EFBFBD>敶枏<E695B6>甇血膥<E8A180>?*/ /**
* @brief 获取当前武器。
* @param Context 可选查询上下文。
* @return 当前武器对象。
*/
virtual UObject* GetCurrentWeapon_Implementation(UObject* Context = nullptr) const override; virtual UObject* GetCurrentWeapon_Implementation(UObject* Context = nullptr) const override;
/** @brief 霈曄蔭敶枏<EFBFBD>甇血膥<EFBFBD>?*/ /** @brief 设置当前武器。 */
virtual void SetCurrentWeapon_Implementation(UObject* Weapon) override; virtual void SetCurrentWeapon_Implementation(UObject* Weapon) override;
/** @brief <20><EFBFBD><E79195><EFBFBD><EFBFBD> Socket <20><>㮾撖孵<E69296><E5ADB5><EFBFBD>?*/ /**
* @brief 获取指定 Socket 的相对变换。
* @param InSkeletalMeshComponent 用于查找 Socket 的骨骼网格组件。
* @param StaticMesh 静态网格参考。
* @param SkeletalMesh 骨骼网格参考。
* @param SocketName Socket 名称。
* @param OutTransform 输出相对变换。
* @return 成功取得变换时返回 true。
*/
virtual bool GetRelativeTransformToSocket_Implementation(const USkeletalMeshComponent* InSkeletalMeshComponent, const UStaticMesh* StaticMesh, const USkeletalMesh* SkeletalMesh, FName SocketName, FTransform& OutTransform) const override; virtual bool GetRelativeTransformToSocket_Implementation(const USkeletalMeshComponent* InSkeletalMeshComponent, const UStaticMesh* StaticMesh, const USkeletalMesh* SkeletalMesh, FName SocketName, FTransform& OutTransform) const override;
protected: protected:
/** @brief 撠<><E692A0><EFBFBD>?Tag <20><EFBFBD>銝?Ability Tag<61>?*/ /**
* @brief 将输入 Tag 映射为 Ability Tag。
* @param InputTag 输入系统提供的 Tag。
* @return 对应的 Ability Tag。
*/
virtual FGameplayTag GetAbilityTagForInputTag(FGameplayTag InputTag) const; virtual FGameplayTag GetAbilityTagForInputTag(FGameplayTag InputTag) const;
/** @brief 摨𠉛鍂 Character <EFBFBD>滨蔭暺䁅恕<EFBFBD><EFBFBD>?*/ /** @brief 应用 Character 配置默认值。 */
virtual void ApplyCharacterSettings(); virtual void ApplyCharacterSettings();
/** @brief <EFBFBD>滚𦛚蝡臬<EFBFBD>甇亦宏<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 服务端同步移动意图。 */
UFUNCTION(Server, Unreliable) UFUNCTION(Server, Unreliable)
void ServerSetMovementIntent(FVector NewMovementIntent); void ServerSetMovementIntent(FVector NewMovementIntent);
/** @brief <EFBFBD>滚𦛚蝡航挽蝵格<EFBFBD><EFBFBD>㛖𤌍<EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 服务端设置战斗目标。 */
UFUNCTION(Server, Reliable) UFUNCTION(Server, Reliable)
void ServerSetCombatTargetActor(AActor* NewCombatTargetActor); void ServerSetCombatTargetActor(AActor* NewCombatTargetActor);
/** @brief <EFBFBD>滚𦛚蝡舀<EFBFBD><EFBFBD><EFBFBD>憪衤漱鈭鉝<EFBFBD>?*/ /** @brief 服务端执行开始交互。 */
UFUNCTION(Server, Reliable) UFUNCTION(Server, Reliable)
void ServerRequestInteraction(int32 OptionIndex); void ServerRequestInteraction(int32 OptionIndex);
/** @brief <EFBFBD>滚𦛚蝡舀<EFBFBD><EFBFBD><EFBFBD>嗡漱鈭鉝<EFBFBD>?*/ /** @brief 服务端执行即时交互。 */
UFUNCTION(Server, Reliable) UFUNCTION(Server, Reliable)
void ServerRequestInstantInteraction(int32 OptionIndex); void ServerRequestInstantInteraction(int32 OptionIndex);
/** @brief <EFBFBD>滚𦛚蝡舐<EFBFBD><EFBFBD>煺漱鈭鉝<EFBFBD>?*/ /** @brief 服务端结束交互。 */
UFUNCTION(Server, Reliable) UFUNCTION(Server, Reliable)
void ServerEndInteraction(); void ServerEndInteraction();
/** @brief <EFBFBD>滚𦛚蝡臬<EFBFBD><EFBFBD>漱鈭垍𤌍<EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief 服务端切换交互目标。 */
UFUNCTION(Server, Reliable) UFUNCTION(Server, Reliable)
void ServerCycleInteractionTarget(bool bNext); void ServerCycleInteractionTarget(bool bNext);
/** @brief 閫坿𠧧<EFBFBD>曹澈<EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞嗚<EFBFBD>?*/ /** @brief 角色共享状态组件。 */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character") UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character")
TObjectPtr<UPHYCharacterStateComponent> CharacterStateComponent; TObjectPtr<UPHYCharacterStateComponent> CharacterStateComponent;
/** @brief GCS <EFBFBD><EFBFBD>蝟餌<EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief GCS 战斗系统组件。 */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character") UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character")
TObjectPtr<UGCS_CombatSystemComponent> CombatSystemComponent; TObjectPtr<UGCS_CombatSystemComponent> CombatSystemComponent;
/** @brief GCS <EFBFBD><EFBFBD>蝟餌<EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief GCS 目标系统组件。 */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character") UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character")
TObjectPtr<UGCS_TargetingSystemComponent> TargetingSystemComponent; TObjectPtr<UGCS_TargetingSystemComponent> TargetingSystemComponent;
/** @brief GCS <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief GCS 战斗队伍代理组件。 */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character") UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character")
TObjectPtr<UGCS_CombatTeamAgentComponent> CombatTeamAgentComponent; TObjectPtr<UGCS_CombatTeamAgentComponent> CombatTeamAgentComponent;
/** @brief GGS 鈭支<EFBFBD>蝟餌<EFBFBD><EFBFBD><EFBFBD>?*/ /** @brief GGS 交互系统组件。 */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character") UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character")
TObjectPtr<UGGS_InteractionSystemComponent> InteractionSystemComponent; TObjectPtr<UGGS_InteractionSystemComponent> InteractionSystemComponent;
/** @brief GGS <EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞嗚<EFBFBD>?*/ /** @brief GGS 布娃娃组件。 */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character") UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character")
TObjectPtr<UGGS_RagdollComponent> RagdollComponent; TObjectPtr<UGGS_RagdollComponent> RagdollComponent;
/** @brief GES 銝𠹺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𦦵<EFBFBD>隞嗚<EFBFBD>?*/ /** @brief GES 上下文效果组件。 */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character") UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character")
TObjectPtr<UGES_ContextEffectComponent> ContextEffectComponent; TObjectPtr<UGES_ContextEffectComponent> ContextEffectComponent;
/** @brief 餈𣂼𢆡皞?Mesh 銝擧遬蝷箏<E89DB7> Mesh <20><><EFBFBD><EFBFBD>隞嗚<E99A9E>?*/ /** @brief 运动源 Mesh 与显示层 Mesh 的桥接组件。 */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character|Animation") UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character|Animation")
TObjectPtr<UPHYCharacterMeshBridgeComponent> MeshBridgeComponent; TObjectPtr<UPHYCharacterMeshBridgeComponent> MeshBridgeComponent;
/** @brief SLS <EFBFBD>雴辣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>亙藁蝏<EFBFBD>辣嚗𣬚眏餈𣂼𢆡撅<EFBFBD><EFBFBD>銝剜𦻖<EFBFBD><EFBFBD>?*/ /** @brief SLS 插件集成入口组件,由运动层集中接入。 */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character|Locomotion") UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character|Locomotion")
TObjectPtr<USLSIntegrationComponent> SLSIntegrationComponent; TObjectPtr<USLSIntegrationComponent> SLSIntegrationComponent;
/** @brief GenericGameSystem <EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞嗚<EFBFBD>?*/ /** @brief GenericGameSystem 可选集成入口组件。 */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character|Locomotion") UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character|Locomotion")
TObjectPtr<UActorComponent> GenericIntegrationComponent; TObjectPtr<UActorComponent> GenericIntegrationComponent;
/** @brief <EFBFBD>曄內撅?Mesh 蝏<>辣嚗峕㗁頧質<E9A0A7>銝𡁜<E98A9D>憭𤥁<E686AD> Mesh<EFBFBD>?*/ /** @brief 显示层 Mesh 组件,承载职业和外观 Mesh*/
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character|Animation") UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="PHY|Character|Animation")
TObjectPtr<USkeletalMeshComponent> DisplayMeshComponent; TObjectPtr<USkeletalMeshComponent> DisplayMeshComponent;
/** @brief 敶枏<EFBFBD> Avatar 蝻枏<EFBFBD><EFBFBD>?ASC嚗𣬚焵摰嗆䔉<E59786>?PlayerState嚗淾I <20>亥䌊<E4BAA5>芾澈<E88ABE>?*/ /** @brief 当前 Avatar 缓存的 ASC玩家来自 PlayerStateAI 来自自身。 */
UPROPERTY(Transient) UPROPERTY(Transient)
TObjectPtr<UAbilitySystemComponent> CachedAbilitySystemComponent; TObjectPtr<UAbilitySystemComponent> CachedAbilitySystemComponent;
/** @brief ASC <EFBFBD>臬炏撌脩<EFBFBD><EFBFBD><EFBFBD><EFBFBD>碶蛹敶枏<EFBFBD> Avatar<EFBFBD>?*/ /** @brief ASC 是否已经初始化为当前 Avatar*/
UPROPERTY(Transient) UPROPERTY(Transient)
bool bAbilitySystemReady = false; bool bAbilitySystemReady = false;
}; };