2024-11-12 17:24:59 +01:00

83 lines
1.8 KiB
C#

using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// Assign this script to the indicator prefabs.
/// </summary>
public class Indicator : MonoBehaviour
{
[SerializeField] private IndicatorType indicatorType;
private Image indicatorImage;
private Text distanceText;
/// <summary>
/// Gets if the game object is active in hierarchy.
/// </summary>
public bool Active
{
get
{
return transform.gameObject.activeInHierarchy;
}
}
/// <summary>
/// Gets the indicator type
/// </summary>
public IndicatorType Type
{
get
{
return indicatorType;
}
}
void Awake()
{
indicatorImage = transform.GetComponent<Image>();
distanceText = transform.GetComponentInChildren<Text>();
}
/// <summary>
/// Sets the image color for the indicator.
/// </summary>
/// <param name="color"></param>
public void SetImageColor(Color color)
{
indicatorImage.color = color;
}
/// <summary>
/// Sets the distance text for the indicator.
/// </summary>
/// <param name="value"></param>
public void SetDistanceText(float value)
{
distanceText.text = value >= 0 ? Mathf.Floor(value) + " m" : "";
}
/// <summary>
/// Sets the distance text rotation of the indicator.
/// </summary>
/// <param name="rotation"></param>
public void SetTextRotation(Quaternion rotation)
{
distanceText.rectTransform.rotation = rotation;
}
/// <summary>
/// Sets the indicator as active or inactive.
/// </summary>
/// <param name="value"></param>
public void Activate(bool value)
{
transform.gameObject.SetActive(value);
}
}
public enum IndicatorType
{
BOX,
ARROW
}