Core/AreaTriggers: Handle AREATRIGGER_FLAG_HAS_DYNAMIC_SHAPE for disks

Port From (https://github.com/TrinityCore/TrinityCore/commit/5be076b2400364c5fc2b293032ad92f1d955ec1f)
This commit is contained in:
hondacrx
2023-09-02 15:11:38 -04:00
parent 9ecb3449d5
commit 91f750e562
2 changed files with 18 additions and 5 deletions
@@ -475,7 +475,7 @@ namespace Game.Entities
{
if (GetCreateProperties().MorphCurveId != 0)
{
radius = MathFunctions.lerp(_shape.SphereDatas.Radius, _shape.SphereDatas.RadiusTarget, Global.DB2Mgr.GetCurveValueAt(GetCreateProperties().MorphCurveId, GetProgress()));
radius = MathFunctions.Lerp(_shape.SphereDatas.Radius, _shape.SphereDatas.RadiusTarget, Global.DB2Mgr.GetCurveValueAt(GetCreateProperties().MorphCurveId, GetProgress()));
}
}
@@ -523,10 +523,23 @@ namespace Game.Entities
void SearchUnitInDisk(List<Unit> targetList)
{
SearchUnits(targetList, GetMaxSearchRadius(), false);
float innerRadius = _shape.DiskDatas.InnerRadius;
float outerRadius = _shape.DiskDatas.OuterRadius;
float height = _shape.DiskDatas.Height;
if (GetTemplate() != null && GetTemplate().HasFlag(AreaTriggerFlags.HasDynamicShape))
{
float progress = GetProgress();
if (GetCreateProperties().MorphCurveId != 0)
progress = Global.DB2Mgr.GetCurveValueAt(GetCreateProperties().MorphCurveId, progress);
innerRadius = MathFunctions.Lerp(_shape.DiskDatas.InnerRadius, _shape.DiskDatas.InnerRadiusTarget, progress);
outerRadius = MathFunctions.Lerp(_shape.DiskDatas.OuterRadius, _shape.DiskDatas.OuterRadiusTarget, progress);
height = MathFunctions.Lerp(_shape.DiskDatas.Height, _shape.DiskDatas.HeightTarget, progress);
}
SearchUnits(targetList, outerRadius, false);
float minZ = GetPositionZ() - height;
float maxZ = GetPositionZ() + height;
@@ -946,7 +959,7 @@ namespace Game.Entities
// 4.f Defines four quarters
blendCurve = MathFunctions.RoundToInterval(ref blendCurve, 1.0f, 4.0f) / 4.0f;
float blendProgress = Math.Min(1.0f, pathProgress / blendCurve);
radius = MathFunctions.lerp(cmi.BlendFromRadius, cmi.Radius, blendProgress);
radius = MathFunctions.Lerp(cmi.BlendFromRadius, cmi.Radius, blendProgress);
}
// Adapt Path progress depending of circle direction