Skip to content

Commit

Permalink
Merge pull request #41 from CarnifexOptimus/_slave_lotsofchanges
Browse files Browse the repository at this point in the history
removed obsolete loop
  • Loading branch information
CarnifexOptimus authored Apr 14, 2024
2 parents a5ce17f + 35f4ce8 commit 21c0256
Showing 1 changed file with 16 additions and 20 deletions.
36 changes: 16 additions & 20 deletions BossMod/BossModule/ArenaBounds.cs
Original file line number Diff line number Diff line change
Expand Up @@ -273,34 +273,30 @@ private static (float, float, WPos) CalculateHalfSizeAndCenter(List<WPos> points
public override IEnumerable<WPos> BuildClipPoly(float offset = 0)
{
var clippedPolygon = new List<WPos>(Points);
var edge = new List<WPos> { Center + new WDir(HalfSize + offset, -HalfSize - offset), Center + new WDir(HalfSize + offset, HalfSize + offset), Center + new WDir(-HalfSize - offset, HalfSize + offset), Center + new WDir(-HalfSize - offset, -HalfSize - offset) };
var input = clippedPolygon;
clippedPolygon = [];

for (int i = 0; i < 4; i++)
for (int j = 0; j < input.Count; j++)
{
var edge = new List<WPos> { Center + new WDir(HalfSize + offset, -HalfSize - offset), Center + new WDir(HalfSize + offset, HalfSize + offset), Center + new WDir(-HalfSize - offset, HalfSize + offset), Center + new WDir(-HalfSize - offset, -HalfSize - offset) };
var input = clippedPolygon;
clippedPolygon = [];
var v1 = input[j];
var v2 = input[(j + 1) % input.Count];

for (int j = 0; j < input.Count; j++)
if (IsInside(v1, edge))
clippedPolygon.Add(v1);
if (!IsInside(v1, edge) && IsInside(v2, edge))
{
var v1 = input[j];
var v2 = input[(j + 1) % input.Count];

if (IsInside(v1, edge))
clippedPolygon.Add(v1);
if (!IsInside(v1, edge) && IsInside(v2, edge))
{
var intersection = IntersectLineSegment(v1, v2, edge[0], edge[1]);
clippedPolygon.Add(intersection);
}
}

if (!IsInside(input[^1], edge) && IsInside(input[0], edge))
{
var intersection = IntersectLineSegment(input[^1], input[0], edge[0], edge[1]);
var intersection = IntersectLineSegment(v1, v2, edge[0], edge[1]);
clippedPolygon.Add(intersection);
}
}

if (!IsInside(input[^1], edge) && IsInside(input[0], edge))
{
var intersection = IntersectLineSegment(input[^1], input[0], edge[0], edge[1]);
clippedPolygon.Add(intersection);
}

return clippedPolygon;
}

Expand Down

0 comments on commit 21c0256

Please sign in to comment.