using System.Collections; using System.Collections.Generic; using UnityEngine; using BITKit; using UnityEngine.Events; using UnityEngine.UIElements; namespace BITKit { public class WorldToScreenPoint : MonoBehaviour { [Header(Constant.Header.Settings)] [SerializeField] private Transform root; [SerializeField] private Optional localOffset; [SerializeField] private Optional worldOffset; [SerializeField] private Optional activeDistance; [Header(Constant.Header.Events)] [SerializeField] private UnityEvent setHeaderEnabled; [SerializeField] private UnityEvent setHeaderPosition; private Transform cameraTrans; private void Start() { if (Camera.main != null) cameraTrans = Camera.main.transform; } private void Update() { var position = root.position; if (localOffset.Allow) { position += root.rotation * localOffset; } if (worldOffset.Allow) { position+=worldOffset; } setHeaderPosition.Invoke(position); if (activeDistance.Allow) { var distance = Vector3.Distance(position, cameraTrans.position); var _enabled = distance < activeDistance; setHeaderEnabled.Invoke(_enabled); } } } }