Files
PHY/Source/PHY/Private/AbilitySystem/MMC/PHY_MMC_MoveSpeed.cpp
2026-03-03 01:23:02 +08:00

32 lines
979 B
C++

// Copyright 2025 PHY. All Rights Reserved.
#include "AbilitySystem/MMC/PHY_MMC_MoveSpeed.h"
#include "AbilitySystem/Attributes/PHYAttributeSet.h"
UPHY_MMC_MoveSpeed::UPHY_MMC_MoveSpeed()
{
AgilityDef = FGameplayEffectAttributeCaptureDefinition(
UPHYAttributeSet::GetAgilityAttribute(),
EGameplayEffectAttributeCaptureSource::Target,
true /* snapshot */);
RelevantAttributesToCapture.Add(AgilityDef);
}
float UPHY_MMC_MoveSpeed::CalculateBaseMagnitude_Implementation(const FGameplayEffectSpec& Spec) const
{
FAggregatorEvaluateParameters EvalParams;
EvalParams.SourceTags = Spec.CapturedSourceTags.GetAggregatedTags();
EvalParams.TargetTags = Spec.CapturedTargetTags.GetAggregatedTags();
float Agility = 0.f;
GetCapturedAttributeMagnitude(AgilityDef, Spec, EvalParams, Agility);
Agility = FMath::Max(0.f, Agility);
constexpr float BaseMoveSpeed = 600.f;
constexpr float AgilityToMoveSpeed = 2.f;
return BaseMoveSpeed + Agility * AgilityToMoveSpeed;
}