45 lines
1.1 KiB
C#
45 lines
1.1 KiB
C#
using System;
|
|
using EFT.Interactive;
|
|
using stupid.solutions.Utils;
|
|
using UnityEngine;
|
|
|
|
namespace stupid.solutions.Data;
|
|
|
|
internal class GameTransitPoint
|
|
{
|
|
private Vector3 screenPosition;
|
|
|
|
public TransitPoint transitPoint { get; }
|
|
|
|
public Vector3 ScreenPosition => screenPosition;
|
|
|
|
public bool IsOnScreen { get; private set; }
|
|
|
|
public float Distance { get; private set; }
|
|
|
|
public string Name { get; set; }
|
|
|
|
public string FormattedDistance => $"{Math.Round(Distance)}m";
|
|
|
|
public GameTransitPoint(TransitPoint tPoint)
|
|
{
|
|
if (tPoint == null)
|
|
{
|
|
throw new ArgumentNullException("tPoint");
|
|
}
|
|
transitPoint = tPoint;
|
|
screenPosition = default(Vector3);
|
|
Distance = 0f;
|
|
Name = transitPoint.name ?? "";
|
|
}
|
|
|
|
public void RecalculateDynamics()
|
|
{
|
|
if (!(transitPoint == null) && GameUtils.IsTransitPointValid(transitPoint))
|
|
{
|
|
screenPosition = GameUtils.WorldPointToScreenPoint(transitPoint.transform.position);
|
|
IsOnScreen = GameUtils.IsScreenPointVisible(screenPosition);
|
|
Distance = Vector3.Distance(Main.MainCamera.transform.position, transitPoint.transform.position);
|
|
}
|
|
}
|
|
}
|