r2mods/ilspy_dump/ror2_csproj/RoR2.UI/DistanceIndicator.cs

52 lines
1.3 KiB
C#

using System.Collections.Generic;
using TMPro;
using UnityEngine;
namespace RoR2.UI;
[RequireComponent(typeof(PositionIndicator))]
public class DistanceIndicator : MonoBehaviour
{
public PositionIndicator positionIndicator;
public TextMeshPro tmp;
private static readonly List<DistanceIndicator> instancesList;
private void OnEnable()
{
instancesList.Add(this);
}
private void OnDisable()
{
instancesList.Remove(this);
}
static DistanceIndicator()
{
instancesList = new List<DistanceIndicator>();
UICamera.onUICameraPreCull += UpdateText;
}
private static void UpdateText(UICamera uiCamera)
{
CameraRigController cameraRigController = uiCamera.cameraRigController;
Transform transform = null;
if ((bool)cameraRigController && (bool)cameraRigController.target)
{
CharacterBody component = cameraRigController.target.GetComponent<CharacterBody>();
transform = ((!component) ? cameraRigController.target.transform : component.coreTransform);
}
if ((bool)transform)
{
for (int i = 0; i < instancesList.Count; i++)
{
DistanceIndicator distanceIndicator = instancesList[i];
string text = (distanceIndicator.positionIndicator.targetTransform.position - transform.position).magnitude.ToString("0.0") + "m";
distanceIndicator.tmp.text = text;
}
}
}
}