Core/AreaTriggers: Implemented new areatrigger type: bounded plane

Port From (https://github.com/TrinityCore/TrinityCore/commit/6856b248836205f3567d27848541859b93d93469)
This commit is contained in:
hondacrx
2022-12-17 17:16:08 -05:00
parent a4ebb8455d
commit 38197f7996
4 changed files with 37 additions and 2 deletions
@@ -376,6 +376,9 @@ namespace Game.Entities
case AreaTriggerTypes.Disk:
SearchUnitInDisk(targetList);
break;
case AreaTriggerTypes.BoundedPlane:
SearchUnitInBoundedPlane(targetList);
break;
default:
break;
}
@@ -470,6 +473,25 @@ namespace Game.Entities
targetList.RemoveAll(unit => unit.IsInDist2d(this, innerRadius) || unit.GetPositionZ() < minZ || unit.GetPositionZ() > maxZ);
}
void SearchUnitInBoundedPlane(List<Unit> targetList)
{
SearchUnits(targetList, GetMaxSearchRadius(), false);
Position boxCenter = GetPosition();
float extentsX, extentsY;
unsafe
{
extentsX = _shape.BoxDatas.Extents[0];
extentsY = _shape.BoxDatas.Extents[1];
}
targetList.RemoveAll(unit =>
{
return !unit.IsWithinBox(boxCenter, extentsX, extentsY, MapConst.MapSize);
});
}
void HandleUnitEnterExit(List<Unit> newTargetList)
{
List<ObjectGuid> exitUnits = _insideUnits;