第一次提交
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
// Copyright 2025 https://yuewu.dev/en All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "UObject/Object.h"
|
||||
#include "GMS_SettingEnumLibrary.generated.h"
|
||||
|
||||
/**
|
||||
* Defines rotation behavior when the character is in the air.
|
||||
* 定义角色在空中的旋转行为。
|
||||
*/
|
||||
UENUM(BlueprintType)
|
||||
enum class EGMS_InAirRotationMode : uint8
|
||||
{
|
||||
// Rotate to velocity direction on jump. 在跳跃时旋转到速度方向。
|
||||
RotateToVelocityOnJump,
|
||||
// Maintain relative rotation. 保持相对旋转。
|
||||
KeepRelativeRotation,
|
||||
// Maintain world rotation. 保持世界旋转。
|
||||
KeepWorldRotation
|
||||
};
|
||||
|
||||
/**
|
||||
* Defines how turn-in-place animations are triggered.
|
||||
* 定义如何触发原地转向动画。
|
||||
*/
|
||||
UENUM(BlueprintType)
|
||||
enum class EGMS_TurnInPlacePlayMethod : uint8
|
||||
{
|
||||
Graph, // Trigger turn-in-place in animation graph. 在动画图中触发原地转向。
|
||||
Montage // Trigger turn-in-place as a dynamic slot montage. 作为动态槽蒙太奇触发原地转向。
|
||||
};
|
||||
|
||||
/**
|
||||
* Defines how overlay animations are played.
|
||||
* 定义如何播放覆盖动画。
|
||||
*/
|
||||
UENUM(BlueprintType)
|
||||
enum class EGMS_OverlayPlayMode : uint8
|
||||
{
|
||||
SequencePlayer, // Play as a sequence player. 作为序列播放器播放。
|
||||
SequenceEvaluator // Play as a sequence evaluator. 作为序列评估器播放。
|
||||
};
|
||||
|
||||
/**
|
||||
* Defines the blending mode for layered bone animations.
|
||||
* 定义分层骨骼动画的混合模式。
|
||||
*/
|
||||
UENUM(BlueprintType)
|
||||
enum class EGMS_LayeredBoneBlendMode : uint8
|
||||
{
|
||||
BranchFilter, // Use branch filter for blending. 使用分支过滤器进行混合。
|
||||
BlendMask // Use blend mask for blending. 使用混合蒙版进行混合。
|
||||
};
|
||||
|
||||
/**
|
||||
* Defines how velocity direction is determined.
|
||||
* 定义如何确定速度方向。
|
||||
*/
|
||||
UENUM(BlueprintType)
|
||||
enum class EGMS_VelocityDirectionMode_DEPRECATED : uint8
|
||||
{
|
||||
OrientToLastVelocityDirection, // Orient to the last velocity direction. 朝向最后的速度方向。
|
||||
OrientToInputDirection, // Orient to the input direction. 朝向输入方向。
|
||||
TurningCircle // Use a turning circle for orientation. 使用转向圆进行朝向。
|
||||
};
|
||||
|
||||
/**
|
||||
* Defines view direction modes.
|
||||
* 定义视图方向模式。
|
||||
*/
|
||||
UENUM(BlueprintType)
|
||||
enum class EGMS_ViewDirectionMode_DEPRECATED : uint8
|
||||
{
|
||||
Default, // Default view direction mode. 默认视图方向模式。
|
||||
Aiming // Aiming view direction mode. 瞄准视图方向模式。
|
||||
};
|
||||
@@ -0,0 +1,221 @@
|
||||
// Copyright 2025 https://yuewu.dev/en All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "GMS_SettingStructLibrary.h"
|
||||
#include "UObject/Object.h"
|
||||
#include "Engine/DataAsset.h"
|
||||
#include "Runtime/Launch/Resources/Version.h"
|
||||
#if ENGINE_MINOR_VERSION < 5
|
||||
#include "InstancedStruct.h"
|
||||
#else
|
||||
#include "StructUtils/InstancedStruct.h"
|
||||
#endif
|
||||
#include "Utility/GMS_Tags.h"
|
||||
#include "GMS_SettingObjectLibrary.generated.h"
|
||||
|
||||
#pragma region CommonSettings
|
||||
|
||||
class UGMS_AnimLayer;
|
||||
class UGMS_AnimLayerSetting;
|
||||
|
||||
/**
|
||||
* Defines multiple movement set settings for a character.
|
||||
* 定义角色的多个运动集设置。
|
||||
*/
|
||||
UCLASS(BlueprintType, Const)
|
||||
class GENERICMOVEMENTSYSTEM_API UGMS_MovementDefinition : public UDataAsset
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
/**
|
||||
* Map of gameplay tags to movement set settings.
|
||||
* 游戏标签到运动集设置的映射。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, Category="GMS", meta=(ForceInlineRow))
|
||||
TMap<FGameplayTag, FGMS_MovementSetSetting> MovementSets;
|
||||
|
||||
#if WITH_EDITOR
|
||||
/**
|
||||
* Called before saving the asset in the editor.
|
||||
* 在编辑器中保存资产前调用。
|
||||
* @param SaveContext The save context. 保存上下文。
|
||||
*/
|
||||
virtual void PreSave(FObjectPreSaveContext SaveContext) override;
|
||||
|
||||
/**
|
||||
* Validates data in the editor.
|
||||
* 在编辑器中验证数据。
|
||||
* @param Context The validation context. 验证上下文。
|
||||
* @return The validation result. 验证结果。
|
||||
*/
|
||||
virtual EDataValidationResult IsDataValid(class FDataValidationContext& Context) const override;
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
* Stores animation graph-specific settings, one per unique skeleton.
|
||||
* 存储动画图特定的设置,每个唯一骨架一个。
|
||||
*/
|
||||
UCLASS()
|
||||
class GENERICMOVEMENTSYSTEM_API UGMS_AnimGraphSetting : public UDataAsset
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
/**
|
||||
* Maps animation layer settings to their corresponding animation layer implementations.
|
||||
* 将动画层设置映射到对应的动画层实现。
|
||||
* @note Add custom animation layer settings/implementations to this mapping. 将自定义动画层设置/实现添加到此映射。
|
||||
*/
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Settings")
|
||||
TMap<TSubclassOf<UGMS_AnimLayerSetting>, TSubclassOf<UGMS_AnimLayer>> AnimLayerSettingToInstanceMapping;
|
||||
|
||||
/**
|
||||
* Settings for orientation warping.
|
||||
* 朝向扭曲的设置。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Settings")
|
||||
FGMS_OrientationWarpingSettings OrientationWarping;
|
||||
};
|
||||
|
||||
#pragma endregion
|
||||
|
||||
#pragma region ControlSettings
|
||||
|
||||
/**
|
||||
* Default Movement control settings.
|
||||
* 默认运动控制设置。
|
||||
*/
|
||||
UCLASS(BlueprintType, Blueprintable, Const, DisplayName="GMS Movement Control Setting")
|
||||
class GENERICMOVEMENTSYSTEM_API UGMS_MovementControlSetting_Default : public UDataAsset
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
/**
|
||||
* Matches a speed to a movement state tag based on a threshold.
|
||||
* 根据阈值将速度匹配到运动状态标签。
|
||||
* @param Speed The current speed. 当前速度。
|
||||
* @param Threshold The speed threshold. 速度阈值。
|
||||
* @return The matching gameplay tag. 匹配的游戏标签。
|
||||
*/
|
||||
FGameplayTag MatchStateTagBySpeed(float Speed, float Threshold) const;
|
||||
|
||||
/**
|
||||
* Gets a movement state setting by index.
|
||||
* 通过索引获取运动状态设置。
|
||||
* @param Index The index of the state. 状态索引。
|
||||
* @param OutSetting The output movement state setting. 输出的运动状态设置。
|
||||
* @return True if found. 如果找到返回true。
|
||||
*/
|
||||
bool GetStateByIndex(const int32& Index, FGMS_MovementStateSetting& OutSetting) const;
|
||||
|
||||
/**
|
||||
* Gets a movement state setting by speed level.
|
||||
* 通过速度级别获取运动状态设置。
|
||||
* @param Level The speed level. 速度级别。
|
||||
* @param OutSetting The output movement state setting. 输出的运动状态设置。
|
||||
* @return True if found. 如果找到返回true。
|
||||
*/
|
||||
bool GetStateBySpeedLevel(const int32& Level, FGMS_MovementStateSetting& OutSetting) const;
|
||||
|
||||
/**
|
||||
* Gets a movement state setting by tag.
|
||||
* 通过标签获取运动状态设置。
|
||||
* @param Tag The gameplay tag. 游戏标签。
|
||||
* @param OutSetting The output movement state setting. 输出的运动状态设置。
|
||||
* @return True if found. 如果找到返回true。
|
||||
*/
|
||||
bool GetStateByTag(const FGameplayTag& Tag, FGMS_MovementStateSetting& OutSetting) const;
|
||||
|
||||
const FGMS_MovementStateSetting* GetMovementStateSetting(const FGameplayTag& Tag) const;
|
||||
|
||||
const FGMS_MovementStateSetting* GetMovementStateSetting(const FGameplayTag& Tag, bool bHasFallback) const;
|
||||
|
||||
/**
|
||||
* Speed threshold for determining movement.
|
||||
* 确定移动的速度阈值。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Control", Meta = (ClampMin = 0, ForceUnits = "cm/s"))
|
||||
float MovingSpeedThreshold{50.0f};
|
||||
|
||||
/**
|
||||
* Array of movement states, sorted by speed.
|
||||
* 按速度排序的运动状态数组。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Control", meta=(TitleProperty="EditorFriendlyName"))
|
||||
TArray<FGMS_MovementStateSetting> MovementStates;
|
||||
|
||||
/**
|
||||
* Setting for velocity based rotation mode.
|
||||
* 基于速率的旋转模式设置。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="RotationControl", meta=(ExcludeBaseStruct))
|
||||
TInstancedStruct<FGMS_VelocityDirectionSetting_Base> VelocityDirectionSetting;
|
||||
|
||||
/**
|
||||
* Setting for view based rotation mode.
|
||||
* 基于视角的旋转模式设置。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="RotationControl")
|
||||
TInstancedStruct<FGMS_ViewDirectionSetting_Base> ViewDirectionSetting;
|
||||
|
||||
/**
|
||||
* Rotation mode when in air.
|
||||
* 空中时的旋转模式。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="RotationControl")
|
||||
EGMS_InAirRotationMode InAirRotationMode{EGMS_InAirRotationMode::KeepRelativeRotation};
|
||||
|
||||
/**
|
||||
* Interpolation speed for in-air rotation.
|
||||
* 空中旋转的插值速度。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="RotationControl", meta=(ClampMin=0))
|
||||
float InAirRotationInterpolationSpeed = 5.0f;
|
||||
|
||||
/**
|
||||
* Maps speed levels to movement state indices.
|
||||
* 将速度级别映射到运动状态索引。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, Category="Advanced", meta=(EditCondition=false, ForceInlineRow))
|
||||
TMap<int32, int32> SpeedLevelToArrayIndex;
|
||||
|
||||
#if WITH_EDITORONLY_DATA
|
||||
|
||||
float MigrateRotationInterpolationSpeed(float Old);
|
||||
/**
|
||||
* Called before saving the asset in the editor.
|
||||
* 在编辑器中保存资产前调用。
|
||||
* @param SaveContext The save context. 保存上下文。
|
||||
*/
|
||||
virtual void PreSave(FObjectPreSaveContext SaveContext) override;
|
||||
|
||||
/**
|
||||
* Validates data in the editor.
|
||||
* 在编辑器中验证数据。
|
||||
* @param Context The validation context. 验证上下文。
|
||||
* @return The validation result. 验证结果。
|
||||
*/
|
||||
virtual EDataValidationResult IsDataValid(class FDataValidationContext& Context) const override;
|
||||
#endif
|
||||
};
|
||||
|
||||
#pragma endregion
|
||||
|
||||
#pragma region AnimSettings
|
||||
|
||||
/**
|
||||
* Base class for custom movement set user settings.
|
||||
* 自定义运动集用户设置的基类。
|
||||
* @note Subclass to add custom settings without modifying movement set settings. 子类化以添加自定义设置,而无需修改运动集设置。
|
||||
*/
|
||||
UCLASS(BlueprintType, Blueprintable, Abstract, Const, EditInlineNew, DefaultToInstanced)
|
||||
class GENERICMOVEMENTSYSTEM_API UGMS_MovementSetUserSetting : public UObject
|
||||
{
|
||||
GENERATED_BODY()
|
||||
};
|
||||
#pragma endregion
|
||||
@@ -0,0 +1,871 @@
|
||||
// Copyright 2025 https://yuewu.dev/en All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "GMS_SettingEnumLibrary.h"
|
||||
#include "Animation/AnimData/BoneMaskFilter.h"
|
||||
#include "UObject/Object.h"
|
||||
#include "Curves/CurveFloat.h"
|
||||
#include "Engine/EngineTypes.h"
|
||||
#include "BoneControllers/BoneControllerTypes.h"
|
||||
#include "Utility/GMS_Tags.h"
|
||||
#include "GMS_SettingStructLibrary.generated.h"
|
||||
|
||||
class UGMS_MovementSetUserSetting;
|
||||
class UGMS_AnimLayerSetting_SkeletalControls;
|
||||
class UGMS_MovementControlSetting_Default;
|
||||
class UGMS_AnimLayerSetting_Additive;
|
||||
class UGMS_CharacterMovementSetting;
|
||||
class UGMS_CharacterRotationSetting;
|
||||
class UGMS_AnimLayerSetting_View;
|
||||
class UGMS_AnimLayerSetting_Overlay;
|
||||
class UGMS_AnimLayerSetting_StateOverlays;
|
||||
class UGMS_AnimLayerSetting_States;
|
||||
|
||||
/**
|
||||
* Stores bone references for orientation warping.
|
||||
* 存储用于朝向扭曲的骨骼引用。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_OrientationWarpingBoneReference
|
||||
{
|
||||
GENERATED_USTRUCT_BODY()
|
||||
|
||||
/**
|
||||
* Spine bones used to counter-rotate the body to keep facing forward.
|
||||
* 用于反向旋转身体以保持向前朝向的脊椎骨骼。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, Category="GMS")
|
||||
TArray<FBoneReference> SpineBones;
|
||||
|
||||
/**
|
||||
* IK foot root bone definition.
|
||||
* IK脚根骨骼定义。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, Category="GMS")
|
||||
FBoneReference IKFootRootBone;
|
||||
|
||||
/**
|
||||
* IK foot bone definitions.
|
||||
* IK脚骨骼定义。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, Category="GMS")
|
||||
TArray<FBoneReference> IKFootBones;
|
||||
};
|
||||
|
||||
/**
|
||||
* Settings for the orientation warping node in the animation graph.
|
||||
* 动画图中朝向扭曲节点的设置。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_OrientationWarpingSettings
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* Evaluation mode for orientation warping (Graph or Manual).
|
||||
* 朝向扭曲的评估模式(Graph或Manual)。
|
||||
* @note Use Manual mode for animations without root motion. 对于无根运动的动画使用Manual模式。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
EWarpingEvaluationMode Mode = EWarpingEvaluationMode::Graph;
|
||||
|
||||
/**
|
||||
* Bone references for orientation warping.
|
||||
* 朝向扭曲的骨骼引用。
|
||||
*/
|
||||
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category="GMS")
|
||||
FGMS_OrientationWarpingBoneReference BoneReference;
|
||||
|
||||
/**
|
||||
* Specifies how much rotation is applied to the body versus IK feet.
|
||||
* 指定身体与IK脚的旋转分配比例。
|
||||
*/
|
||||
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category="GMS", meta=(ClampMin="0.0", ClampMax="1.0"))
|
||||
float DistributedBoneOrientationAlpha = 0.75f;
|
||||
|
||||
/**
|
||||
* Interpolation speed for reaching the final warped rotation angle (alpha per second).
|
||||
* 达到最终扭曲旋转角度的插值速度(每秒alpha)。
|
||||
* @note 0 means instantaneous rotation; higher values introduce smoothing. 0表示瞬时旋转;较高值引入平滑。
|
||||
*/
|
||||
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category="GMS", meta=(ClampMin="0.0"))
|
||||
float RotationInterpSpeed = 10.f;
|
||||
};
|
||||
|
||||
/**
|
||||
* Bone references for stride warping.
|
||||
* 步幅适配的骨骼引用。
|
||||
*/
|
||||
USTRUCT()
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_StrideWarpingBoneReference
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* Pelvis bone reference.
|
||||
* 骨盆骨骼引用。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, Category="GMS")
|
||||
FBoneReference PelvisBone;
|
||||
|
||||
/**
|
||||
* IK foot root bone reference.
|
||||
* IK脚根骨骼引用。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, Category="GMS")
|
||||
FBoneReference IKFootRootBone;
|
||||
};
|
||||
|
||||
/**
|
||||
* Foot bone definitions for stride warping.
|
||||
* 步幅适配的脚骨骼定义。
|
||||
*/
|
||||
USTRUCT()
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_StrideWarpingFootDefinition
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* IK foot bone.
|
||||
* IK脚骨骼。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, Category="GMS")
|
||||
FBoneReference IKFootBone;
|
||||
|
||||
/**
|
||||
* FK foot bone.
|
||||
* FK脚骨骼。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, Category="GMS")
|
||||
FBoneReference FKFootBone;
|
||||
|
||||
/**
|
||||
* Thigh bone.
|
||||
* 大腿骨骼。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, Category="GMS")
|
||||
FBoneReference ThighBone;
|
||||
};
|
||||
|
||||
/**
|
||||
* Settings for the stride warping node in the animation graph.
|
||||
* 动画图中步幅适配节点的设置。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_StrideWarpingSettings
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* Enables or disables stride warping.
|
||||
* 启用或禁用步幅适配。
|
||||
* @note Disable for non-humanoid characters. 对于非人形角色禁用。
|
||||
*/
|
||||
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category="GMS")
|
||||
bool bEnabled{true};
|
||||
|
||||
/**
|
||||
* Start time for blending in stride warping.
|
||||
* 步幅适配混入的开始时间。
|
||||
* @note For animations with turns, set to when the character moves in a straight line. 对于带转身的动画,设置为角色直线移动的时刻。
|
||||
*/
|
||||
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category="GMS", meta=(ClampMin=0))
|
||||
float BlendInStartOffset{0.15f};
|
||||
|
||||
/**
|
||||
* Duration for fully blending in stride warping.
|
||||
* 步幅适配完全混入的持续时间。
|
||||
*/
|
||||
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category="GMS")
|
||||
float BlendInDurationScaled{0.2f};
|
||||
};
|
||||
|
||||
/**
|
||||
* Settings for the steering node in the animation graph.
|
||||
* 动画图中Steering节点的设置。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_SteeringSettings
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
* 默认构造函数。
|
||||
*/
|
||||
FGMS_SteeringSettings()
|
||||
{
|
||||
bEnabled = true;
|
||||
ProceduralTargetTime = 0.2f;
|
||||
AnimatedTargetTime = 0.5f;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor with parameters.
|
||||
* 带参数的构造函数。
|
||||
* @param bInEnabled Whether steering is enabled. 是否启用Steering。
|
||||
* @param InProceduralTargetTime Procedural target time. 程序化目标时间。
|
||||
* @param InAnimatedTargetTime Animated target time. 动画目标时间。
|
||||
*/
|
||||
FGMS_SteeringSettings(bool bInEnabled, float InProceduralTargetTime, float InAnimatedTargetTime)
|
||||
{
|
||||
bEnabled = bInEnabled;
|
||||
ProceduralTargetTime = InProceduralTargetTime;
|
||||
AnimatedTargetTime = InAnimatedTargetTime;
|
||||
};
|
||||
|
||||
/**
|
||||
* Enables or disables steering.
|
||||
* 启用或禁用Steering。
|
||||
*/
|
||||
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category="GMS")
|
||||
bool bEnabled{true};
|
||||
|
||||
/**
|
||||
* Time to reach target orientation for animations without root motion rotation.
|
||||
* 无根运动旋转动画达到目标朝向的时间。
|
||||
* @note Large values disable procedural turns. 大值禁用程序化转身。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
float ProceduralTargetTime = 0.2f;
|
||||
|
||||
/**
|
||||
* Time to reach target orientation for animations with root motion rotation.
|
||||
* 有根运动旋转动画达到目标朝向的时间。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
float AnimatedTargetTime = 0.5f;
|
||||
};
|
||||
|
||||
/**
|
||||
* Wrapper for branch filters used in blueprint.
|
||||
* 用于蓝图的分支过滤器包装器。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_InputBlendPose
|
||||
{
|
||||
GENERATED_USTRUCT_BODY()
|
||||
|
||||
/**
|
||||
* Array of bone branch filters.
|
||||
* 骨骼分支过滤器数组。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, Category=Filter)
|
||||
TArray<FBranchFilter> BranchFilters;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* General settings for the main animation instance.
|
||||
* 主动画实例的通用设置。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_AnimDataSetting_General
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* Allows the pawn's root bone to rotate independently of the actor's rotation.
|
||||
* 允许Pawn的根骨骼独立于Actor旋转进行旋转。
|
||||
* @note Global setting; animation layers should only change root rotation mode if enabled. 全局设置;动画层仅在启用时更改根旋转模式。
|
||||
* @details Enables complex rotational animations like turn-in-place via root motion. 通过根运动支持复杂的旋转动画,如原地转身。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Common")
|
||||
bool bEnableOffsetRootBoneRotation{true};
|
||||
|
||||
/**
|
||||
* Controls the speed of blending out root bone rotation offset.
|
||||
* 控制根骨骼旋转偏移混出的速度。
|
||||
* @note Closer to 0 is faster; 0 means instant blend out. 越接近0越快;0表示立即混出。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Common", Meta = (ClampMin = 0, ClampMax = 1, EditCondition="bEnableOffsetRootBoneRotation"))
|
||||
float RootBoneRotationHalfLife{0.2};
|
||||
|
||||
/**
|
||||
* Allows the pawn's root bone to translate independently of the actor's location.
|
||||
* 允许Pawn的根骨骼独立于Actor位置进行平移。
|
||||
* @note Global setting; animation layers should only change root translation mode if enabled. 全局设置;动画层仅在启用时更改根平移模式。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Common")
|
||||
bool bEnableOffsetRootBoneTranslation{true};
|
||||
|
||||
/**
|
||||
* Controls the speed of blending out root bone translation offset.
|
||||
* 控制根骨骼位移偏移混出的速度。
|
||||
* @note Closer to 0 is faster; 0 means instant blend out. 越接近0越快;0表示立即混出。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Common", Meta = (ClampMin = 0, ClampMax = 1, EditCondition="bEnableOffsetRootBoneTranslation"))
|
||||
float RootBoneTranslationHalfLife{0.2};
|
||||
|
||||
/**
|
||||
* Controls the speed of lean interpolation in grounded or in-air states.
|
||||
* 控制地面或空中状态下倾斜插值的速度。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Common", Meta = (ClampMin = 0))
|
||||
float LeanInterpolationSpeed{4.0f};
|
||||
|
||||
/**
|
||||
* Speed threshold for determining movement in animation states.
|
||||
* 动画状态中确定移动的速度阈值。
|
||||
*/
|
||||
// UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Common", Meta = (ClampMin = 0, ForceUnits = "cm/s"))
|
||||
// float MovingSmoothSpeedThreshold{150.0f};
|
||||
|
||||
/**
|
||||
* Curve mapping vertical velocity to lean amount in air.
|
||||
* 空中垂直速度到倾斜量的曲线映射。
|
||||
* @note If empty, lean state is not refreshed in air. 如果为空,空中不刷新倾斜状态。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="InAir")
|
||||
TObjectPtr<UCurveFloat> InAirLeanAmountCurve{nullptr};
|
||||
|
||||
/**
|
||||
* Collision channel for ground prediction sweep.
|
||||
* 地面预测扫描的碰撞通道。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="InAir")
|
||||
TEnumAsByte<ECollisionChannel> GroundPredictionSweepChannel{ECC_Visibility};
|
||||
|
||||
/**
|
||||
* Response channels for ground prediction.
|
||||
* 地面预测的响应通道。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="InAir")
|
||||
TArray<TEnumAsByte<ECollisionChannel>> GroundPredictionResponseChannels;
|
||||
|
||||
/**
|
||||
* Collision response container for ground prediction sweep.
|
||||
* 地面预测扫描的碰撞响应容器。
|
||||
*/
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category="InAir")
|
||||
FCollisionResponseContainer GroundPredictionSweepResponses{ECR_Ignore};
|
||||
|
||||
#if WITH_EDITOR
|
||||
/**
|
||||
* Handles property changes in the editor.
|
||||
* 处理编辑器中的属性更改。
|
||||
* @param PropertyChangedEvent The property change event. 属性更改事件。
|
||||
*/
|
||||
void PostEditChangeProperty(const FPropertyChangedEvent& PropertyChangedEvent);
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
#pragma region Rotation Mode Settings
|
||||
|
||||
USTRUCT(BlueprintType, meta=(Hidden))
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_RotationModeSetting
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* Determines if turn-in-place animation follows actor rotation or drives it.
|
||||
* 确定原地转身动画是跟随Actor旋转还是驱动Actor旋转。
|
||||
* @note If enabled, animation catches up with actor rotation; if disabled, it drives rotation. 如果启用,动画跟随Actor旋转;如果禁用,动画驱动旋转。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
bool bEnableRotationWhenNotMoving{true};
|
||||
};
|
||||
|
||||
/**
|
||||
* Setting for view direction based rotation mode.
|
||||
* 基于视角方向的旋转模式设置
|
||||
*/
|
||||
USTRUCT(BlueprintType, meta=(Hidden))
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_ViewDirectionSetting_Base : public FGMS_RotationModeSetting
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* Primary rotation interpolation speed for character's rotation.
|
||||
* 角色的主要旋转插值速度。
|
||||
* @details Smaller value means faster InterpolationSpeed. 值越小,插值速度越大。
|
||||
* @note <=0 disables smoothing. <=0禁用平滑。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS", meta=(ClampMin=0))
|
||||
float RotationInterpolationSpeed = 0.1f;
|
||||
|
||||
/**
|
||||
* Secondary(Extras) rotation interpolation speed for character's rotation.
|
||||
* 角色的次要(额外)旋转插值速度。
|
||||
* @note <=0 disables smoothing <=0禁用平滑。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS", meta=(ClampMin=0))
|
||||
float TargetYawAngleRotationSpeed = 800.0f;
|
||||
};
|
||||
|
||||
/**
|
||||
* Setting for deprecated view direction based rotation mode.
|
||||
* 基于弃用的视角方向的旋转模式设置
|
||||
*/
|
||||
USTRUCT(BlueprintType, meta=(Hidden))
|
||||
struct FGMS_ViewDirectionSetting : public FGMS_ViewDirectionSetting_Base
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* View direction mode (Default or Aiming).
|
||||
* 视图方向模式(默认或瞄准)。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
EGMS_ViewDirectionMode_DEPRECATED DirectionMode{EGMS_ViewDirectionMode_DEPRECATED::Default};
|
||||
|
||||
/**
|
||||
* Determines if turn-in-place animation follows actor rotation or drives it.
|
||||
* 确定原地转身动画是跟随Actor旋转还是驱动Actor旋转。
|
||||
* @note If enabled, animation catches up with actor rotation; if disabled, it drives rotation. 如果启用,动画跟随Actor旋转;如果禁用,动画驱动旋转。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
bool bRotateToViewDirectionWhileNotMoving{true};
|
||||
|
||||
/**
|
||||
* Minimum angle limit between character and camera orientation in aiming mode.
|
||||
* 瞄准模式下角色与相机朝向的最小夹角限制。
|
||||
* @note Ensures character rotation keeps up with fast camera movement. 确保角色旋转跟上快速相机移动。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS", meta=(EditCondition="DirectionMode == EGMS_ViewDirectionMode_DEPRECATED::Aiming", EditConditionHides))
|
||||
float MinAimingYawAngleLimit{90.0f};
|
||||
};
|
||||
|
||||
/**
|
||||
* Setting for default view direction based rotation mode.
|
||||
* 基于默认的视角方向的旋转模式设置
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_ViewDirectionSetting_Default : public FGMS_ViewDirectionSetting_Base
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* Primary rotation interpolation speed curve for character's rotation.
|
||||
* 角色的主要旋转插值速度曲线。
|
||||
* @details This curve maps the speed level of each movement state to InterpolationSpeed, allowing different rotation rate on different movement state. 此曲线将每个运动状态的速度等级映射为插值速度,允许不同运动状态下有不同的旋转速度。
|
||||
* @note Only used when character is moving and have higher priority than "RotationInterpolationSpeed". 仅在角色移动时使用,比“RotationInterpolationSpeed”优先级更高。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS", meta=(ClampMin=0))
|
||||
TObjectPtr<UCurveFloat> RotationInterpolationSpeedCurve{nullptr};
|
||||
};
|
||||
|
||||
/**
|
||||
* Setting for Aiming view direction based rotation mode.
|
||||
* 基于瞄准视角方向的旋转模式设置
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_ViewDirectionSetting_Aiming : public FGMS_ViewDirectionSetting_Base
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* Minimum angle limit between character and camera orientation in aiming mode.
|
||||
* 瞄准模式下角色与相机朝向的最小夹角限制。
|
||||
* @note Ensures character rotation keeps up with fast camera movement. 确保角色旋转跟上快速相机移动。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
float MinAimingYawAngleLimit{90.0f};
|
||||
};
|
||||
|
||||
/**
|
||||
* Setting for velocity direction based rotation mode.
|
||||
* 基于速率方向的旋转模式设置
|
||||
* @note Velocity can come from input ,acceleration, or last movement velocity;
|
||||
*/
|
||||
USTRUCT(BlueprintType, meta=(Hidden))
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_VelocityDirectionSetting_Base : public FGMS_RotationModeSetting
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
// If checked, the character will rotate relative to the object it is standing on in the velocity
|
||||
// direction rotation mode, otherwise the character will ignore that object and keep its world rotation.
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings")
|
||||
bool bInheritBaseRotation{false};
|
||||
};
|
||||
|
||||
/**
|
||||
* Default setting for velocity direction based rotation mode.
|
||||
* 基于默认速率方向的旋转模式设置
|
||||
*/
|
||||
USTRUCT(BlueprintType, meta=(Hidden))
|
||||
struct FGMS_VelocityDirectionSetting : public FGMS_VelocityDirectionSetting_Base
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* Velocity direction mode (e.g., orient to velocity or input).
|
||||
* 速度方向模式(例如,朝向速度或输入)。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
EGMS_VelocityDirectionMode_DEPRECATED DirectionMode{EGMS_VelocityDirectionMode_DEPRECATED::OrientToLastVelocityDirection};
|
||||
|
||||
/**
|
||||
* Rotation rate for turning circle mode (degrees per second).
|
||||
* 转向圆模式的旋转速率(度每秒)。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS", meta=(EditCondition="DirectionMode == EGMS_VelocityDirectionMode_DEPRECATED::TurningCircle", EditConditionHides))
|
||||
float TurningRate{30};
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_VelocityDirectionSetting_Default : public FGMS_VelocityDirectionSetting_Base
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "GMS")
|
||||
bool bOrientateToMoveInputIntent = false;
|
||||
|
||||
/**
|
||||
* If true, the actor will continue orienting towards the last intended orientation (from input) even after movement intent input has ceased.
|
||||
* This makes the character finish orienting after a quick stick flick from the player. If false, character will not turn without input.
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "GMS")
|
||||
bool bMaintainLastInputOrientation = false;
|
||||
|
||||
/**
|
||||
* Primary rotation interpolation speed for character's rotation.
|
||||
* 角色的主要旋转插值速度。
|
||||
* @details Smaller value means faster InterpolationSpeed. 值越小,插值速度越大。
|
||||
* @note <=0 disables smoothing. <=0禁用平滑。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS", meta=(ClampMin=0))
|
||||
float RotationInterpolationSpeed = 0.1f;
|
||||
|
||||
/**
|
||||
* Primary rotation interpolation speed curve for character's rotation.
|
||||
* 角色的主要旋转插值速度曲线。
|
||||
* @details This curve maps the speed level of each movement state to InterpolationSpeed, allowing different rotation rate on different movement state. 此曲线将每个运动状态的速度等级映射为插值速度,允许不同运动状态下有不同的旋转速度。
|
||||
* @note Only used when character is moving and have higher priority than "RotationInterpolationSpeed". 仅在角色移动时使用,比“RotationInterpolationSpeed”优先级更高。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS", meta=(ClampMin=0))
|
||||
TObjectPtr<UCurveFloat> RotationInterpolationSpeedCurve{nullptr};
|
||||
|
||||
/**
|
||||
* Secondary(Extras) moothing for character's rotation speed.
|
||||
* 角色旋转速度的次平滑。
|
||||
* @note <=0 disables smoothing <=0禁用平滑。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS", meta=(ClampMin=0))
|
||||
float TargetYawAngleRotationSpeed = 800.0f;
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_VelocityDirectionSetting_RateBased : public FGMS_VelocityDirectionSetting_Base
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* Rotation rate for turning(degrees per second).
|
||||
* 转向圆模式的旋转速率(度每秒)。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
float TurnRate{30};
|
||||
|
||||
/**
|
||||
* Rotation rate for turning at different speed.
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS", meta=(ClampMin=0))
|
||||
TObjectPtr<UCurveFloat> TurnRateSpeedCurve{nullptr};
|
||||
};
|
||||
|
||||
#pragma endregion
|
||||
|
||||
/**
|
||||
* Settings for in-air movement.
|
||||
* 空中移动的设置。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_InAirSetting
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* Curve mapping vertical velocity to lean amount.
|
||||
* 垂直速度到倾斜量的曲线映射。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
TObjectPtr<UCurveFloat> LeanAmountCurve{nullptr};
|
||||
|
||||
/**
|
||||
* Collision channel for ground prediction sweep.
|
||||
* 地面预测扫描的碰撞通道。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
TEnumAsByte<ECollisionChannel> GroundPredictionSweepChannel{ECC_Visibility};
|
||||
|
||||
/**
|
||||
* Response channels for ground prediction.
|
||||
* 地面预测的响应通道。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
TArray<TEnumAsByte<ECollisionChannel>> GroundPredictionResponseChannels;
|
||||
|
||||
/**
|
||||
* Collision response container for ground prediction sweep.
|
||||
* 地面预测扫描的碰撞响应容器。
|
||||
*/
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
FCollisionResponseContainer GroundPredictionSweepResponses{ECR_Ignore};
|
||||
};
|
||||
|
||||
#pragma region Movement State Settings
|
||||
|
||||
/**
|
||||
* Settings for a single movement state (e.g., walk, jog, sprint).
|
||||
* 单一运动状态的设置(例如,走、慢跑、冲刺)。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_MovementStateSetting
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* Gameplay tag identifying the movement state.
|
||||
* 标识运动状态的游戏标签。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS", meta=(Categories="GMS.MovementState"))
|
||||
FGameplayTag Tag;
|
||||
|
||||
/**
|
||||
* Speed level of the movement state; <0 indicates reverse movement.
|
||||
* 运动状态的速度级别;<0表示反向移动。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
int32 SpeedLevel = INDEX_NONE;
|
||||
|
||||
/**
|
||||
* Speed of the movement state.
|
||||
* 运动状态的速度。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS", Meta = (ClampMin = 0, ForceUnits = "cm/s"))
|
||||
float Speed{375.0f};
|
||||
|
||||
/**
|
||||
* Acceleration of the movement state.
|
||||
* 运动状态的加速度。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
float Acceleration = 800.f;
|
||||
|
||||
/**
|
||||
* Deceleration of the movement state.
|
||||
* 运动状态的减速度。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
float BrakingDeceleration = 1024.f;
|
||||
|
||||
/**
|
||||
* Allowed rotation modes for this movement state.
|
||||
* 此运动状态允许的旋转模式。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="GMS")
|
||||
TArray<FGameplayTag> AllowedRotationModes{GMS_RotationModeTags::VelocityDirection, GMS_RotationModeTags::ViewDirection};
|
||||
|
||||
/**
|
||||
* Equality operator for comparing with another movement state setting.
|
||||
* 与另一个运动状态设置比较的相等运算符。
|
||||
* @param Lhs Left-hand side setting. 左侧设置。
|
||||
* @param RHS Right-hand side setting. 右侧设置。
|
||||
* @return True if tags match. 如果标签匹配返回true。
|
||||
*/
|
||||
friend bool operator==(const FGMS_MovementStateSetting& Lhs, const FGMS_MovementStateSetting& RHS)
|
||||
{
|
||||
return Lhs.Tag == RHS.Tag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Inequality operator for comparing with another movement state setting.
|
||||
* 与另一个运动状态设置比较的不等运算符。
|
||||
* @param Lhs Left-hand side setting. 左侧设置。
|
||||
* @param RHS Right-hand side setting. 右侧设置。
|
||||
* @return True if tags do not match. 如果标签不匹配返回true。
|
||||
*/
|
||||
friend bool operator!=(const FGMS_MovementStateSetting& Lhs, const FGMS_MovementStateSetting& RHS)
|
||||
{
|
||||
return !(Lhs == RHS);
|
||||
}
|
||||
|
||||
/**
|
||||
* Equality operator for comparing with a gameplay tag.
|
||||
* 与游戏标签比较的相等运算符。
|
||||
* @param Other The gameplay tag to compare. 要比较的游戏标签。
|
||||
* @return True if tags match. 如果标签匹配返回true。
|
||||
*/
|
||||
bool operator==(const FGameplayTag& Other) const
|
||||
{
|
||||
return Tag == Other;
|
||||
}
|
||||
|
||||
/**
|
||||
* Inequality operator for comparing with a gameplay tag.
|
||||
* 与游戏标签比较的不等运算符。
|
||||
* @param Other The gameplay tag to compare. 要比较的游戏标签。
|
||||
* @return True if tags do not match. 如果标签不匹配返回true。
|
||||
*/
|
||||
bool operator!=(const FGameplayTag& Other) const
|
||||
{
|
||||
return Tag != Other;
|
||||
}
|
||||
|
||||
#if WITH_EDITORONLY_DATA
|
||||
|
||||
/**
|
||||
* Velocity direction settings for this movement state.
|
||||
* 此运动状态的速度方向设置。
|
||||
*/
|
||||
UE_DEPRECATED(1.5, "Settings for rotation mode was decoupd from movementstate, see Movement Control Setting.")
|
||||
UPROPERTY(VisibleAnywhere, Category="Deprecated", meta=(EditCondition=false, EditConditionHides))
|
||||
FGMS_VelocityDirectionSetting VelocityDirectionSetting;
|
||||
|
||||
/**
|
||||
* View direction settings for this movement state.
|
||||
* 此运动状态的视图方向设置。
|
||||
*/
|
||||
UE_DEPRECATED(1.5, "Settings for rotation mode was decoupd from movementstate, see Movement Control Setting.")
|
||||
UPROPERTY(VisibleAnywhere, Category="Deprecated", meta=(EditCondition=false, EditConditionHides))
|
||||
FGMS_ViewDirectionSetting ViewDirectionSetting;
|
||||
|
||||
/**
|
||||
* Primary smoothing for character's rotation speed.
|
||||
* 角色旋转的主平滑速度。
|
||||
* @note <=0 disables smoothing. <=0禁用平滑。
|
||||
*/
|
||||
UE_DEPRECATED(1.5, "Settings for rotation mode was decoupd from movementstate, see Movement Control Setting.")
|
||||
UPROPERTY(VisibleAnywhere, Category="Deprecated", meta=(ClampMin=0, EditCondition=false, EditConditionHides))
|
||||
float RotationInterpolationSpeed = 12.0f;
|
||||
|
||||
/**
|
||||
* Speed for smoothing SmoothTargetYawAngle to TargetYawAngle.
|
||||
* 将SmoothTargetYawAngle平滑到TargetYawAngle的速度。
|
||||
* @note <=0 disables smoothing (instant transition). <=0禁用平滑(瞬时过渡)。
|
||||
*/
|
||||
UE_DEPRECATED(1.5, "Settings for rotation mode was decoupd from movementstate, see Movement Control Setting.")
|
||||
UPROPERTY(VisibleAnywhere, Category="Deprecated", meta=(ClampMin=0, EditCondition=false, EditConditionHides))
|
||||
float TargetYawAngleRotationSpeed = 800.0f;
|
||||
|
||||
/**
|
||||
* Editor-friendly name for the movement state.
|
||||
* 运动状态的编辑器友好名称。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, Category="Settings", meta=(EditCondition=false, EditConditionHides))
|
||||
FString EditorFriendlyName;
|
||||
#endif
|
||||
};
|
||||
|
||||
#pragma endregion
|
||||
|
||||
/**
|
||||
* Defines control and animation settings for a movement set.
|
||||
* 定义运动集的控制和动画设置。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_MovementSetSetting
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
/**
|
||||
* Default movement control setting.
|
||||
* 默认运动控制设置。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Control")
|
||||
TObjectPtr<UGMS_MovementControlSetting_Default> ControlSetting;
|
||||
|
||||
/**
|
||||
* Enables per-overlay mode control settings.
|
||||
* 启用按叠层模式的控制设置。
|
||||
* @note If no control setting is found for an overlay mode, the default is used. 如果未找到叠层模式的控制设置,则使用默认设置。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Control")
|
||||
bool bControlSettingPerOverlayMode{false};
|
||||
|
||||
/**
|
||||
* Maps overlay modes to specific control settings.
|
||||
* 将叠层模式映射到特定控制设置。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Control", meta=(Categories="GMS.OverlayMode", EditCondition="bControlSettingPerOverlayMode"))
|
||||
TMap<FGameplayTag, TObjectPtr<UGMS_MovementControlSetting_Default>> ControlSettings;
|
||||
|
||||
/**
|
||||
* General animation settings shared across the movement set.
|
||||
* 运动集共享的通用动画设置。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Animation")
|
||||
FGMS_AnimDataSetting_General AnimDataSetting_General;
|
||||
|
||||
/**
|
||||
* Determines if instanced states settings are used.
|
||||
* 确定是否使用实例化的状态设置。
|
||||
* @note Uncheck if multiple movement sets share the same states layer setting. 如果多个运动集共享相同的状态层设置,则取消勾选。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Animation")
|
||||
bool bUseInstancedStatesSetting{true};
|
||||
|
||||
/**
|
||||
* Settings for the states animation layer (instanced).
|
||||
* 状态动画层的设置(实例化)。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Instanced, Category="Animation", meta = (EditCondition="bUseInstancedStatesSetting", EditConditionHides, DisplayName="Anim Layer Setting (States)"))
|
||||
TObjectPtr<UGMS_AnimLayerSetting_States> AnimLayerSetting_States;
|
||||
|
||||
/**
|
||||
* Settings for the states animation layer (non-instanced).
|
||||
* 状态动画层的设置(非实例化)。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Animation",
|
||||
meta = (EditCondition="!bUseInstancedStatesSetting", EditConditionHides, DisplayName="Anim Layer Setting (States)"))
|
||||
TObjectPtr<UGMS_AnimLayerSetting_States> DA_AnimLayerSetting_States;
|
||||
|
||||
/**
|
||||
* Determines if instanced overlay settings are used.
|
||||
* 确定是否使用实例化的叠层设置。
|
||||
* @note Uncheck if multiple movement sets share the same overlay layer setting. 如果多个运动集共享相同的叠层设置,则取消勾选。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Animation")
|
||||
bool bUseInstancedOverlaySetting{true};
|
||||
|
||||
/**
|
||||
* Settings for the overlay animation layer (non-instanced).
|
||||
* 叠层动画层的设置(非实例化)。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Animation",
|
||||
meta = (EditCondition="!bUseInstancedOverlaySetting", EditConditionHides, DisplayName="Anim Layer Setting (Overlay)"))
|
||||
TObjectPtr<UGMS_AnimLayerSetting_Overlay> DA_AnimLayerSetting_Overlay;
|
||||
|
||||
/**
|
||||
* Settings for the overlay animation layer (instanced).
|
||||
* 叠层动画层的设置(实例化)。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Instanced, Category="Animation",
|
||||
meta = (EditCondition="bUseInstancedOverlaySetting", EditConditionHides, DisplayName="Anim Layer Setting (Overlay)"))
|
||||
TObjectPtr<UGMS_AnimLayerSetting_Overlay> AnimLayerSetting_Overlay;
|
||||
|
||||
/**
|
||||
* Settings for the view animation layer.
|
||||
* 视图动画层的设置。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Instanced, Category="Animation", meta = (DisplayName="Anim Layer Setting (View)"))
|
||||
TObjectPtr<UGMS_AnimLayerSetting_View> AnimLayerSetting_View;
|
||||
|
||||
/**
|
||||
* Settings for the additive animation layer.
|
||||
* 附加动画层的设置。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Instanced, Category="Animation", meta = (DisplayName="Anim Layer Setting (Additive)"))
|
||||
TObjectPtr<UGMS_AnimLayerSetting_Additive> AnimLayerSetting_Additive;
|
||||
|
||||
/**
|
||||
* Settings for the skeletal controls animation layer.
|
||||
* 骨骼控制动画层的设置。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Instanced, Category="Animation", meta = (DisplayName="Anim Layer Setting (SkeletalControls)"))
|
||||
TObjectPtr<UGMS_AnimLayerSetting_SkeletalControls> AnimLayerSetting_SkeletalControls;
|
||||
|
||||
/**
|
||||
* Custom user settings for the movement set.
|
||||
* 运动集的自定义用户设置。
|
||||
* @note Subclass UGMS_MovementSetUserSetting and consume in animation layer blueprints. 子类化UGMS_MovementSetUserSetting并在动画层蓝图中使用。
|
||||
* @example Access via GetMovementSystemComponent()->GetMovementSetSetting()->GetMovementSetUserSetting(SettingClass). 通过GetMovementSystemComponent()->GetMovementSetSetting()->GetMovementSetUserSetting(SettingClass)访问。
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Instanced, Category="Extension", meta=(AllowAbstract=false))
|
||||
TArray<TObjectPtr<UGMS_MovementSetUserSetting>> UserSettings;
|
||||
};
|
||||
Reference in New Issue
Block a user