Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaShared/SharedSource/CachedDistance.cs
2025-03-12 12:56:27 +00:00

31 lines
1.1 KiB
C#

using Microsoft.Xna.Framework;
namespace Barotrauma
{
public class CachedDistance
{
public readonly Vector2 StartWorldPos;
public readonly Vector2 EndWorldPos;
public readonly float Distance;
public double RecalculationTime;
public CachedDistance(Vector2 startWorldPos, Vector2 endWorldPos, float dist, double recalculationTime)
{
StartWorldPos = startWorldPos;
EndWorldPos = endWorldPos;
Distance = dist;
RecalculationTime = recalculationTime;
}
public bool ShouldUpdateDistance(Vector2 currentStartWorldPos, Vector2 currentEndWorldPos, float minDistanceToUpdate = 500.0f)
{
if (Timing.TotalTime < RecalculationTime) { return false; }
float minDistSquared = minDistanceToUpdate * minDistanceToUpdate;
return Vector2.DistanceSquared(StartWorldPos, currentStartWorldPos) > minDistSquared ||
Vector2.DistanceSquared(EndWorldPos, currentEndWorldPos) > minDistSquared;
}
}
public readonly record struct CachedLocation(Vector2 Location, double RecalculationTime);
}