32 lines
979 B
C++
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;
|
|
}
|
|
|