Files
beyond/Assets/ThirdParty/Invector-3rdPersonController/Basic Locomotion/Scripts/Generic/Utils/vUpdateUIPosition.cs
2024-11-20 15:21:28 +01:00

38 lines
1.3 KiB
C#

using UnityEngine;
namespace Invector.Utils
{
public class vUpdateUIPosition : MonoBehaviour
{
public Transform referenceLocalParent;
public bool updateLocalX, updateLocalY, updateLocalZ;
public bool limitOnBox;
[vHideInInspector("limitOnBox")]
public BoxCollider box;
public void UpdatePosition(GameObject target)
{
SetLocalPosition(target.transform.position);
}
public void UpdatePosition(Collider target)
{
SetLocalPosition(target.transform.position);
}
public void UpdatePosition(Transform target)
{
SetLocalPosition(target.position);
}
void SetLocalPosition(Vector3 position)
{
if (limitOnBox && box) position = box.ClosestPointOnBounds(position);
var localPosition = referenceLocalParent.InverseTransformPoint(position);
var selfLocalPosition = transform.localPosition;
if (updateLocalX) selfLocalPosition.x = localPosition.x;
if (updateLocalY) selfLocalPosition.y = localPosition.y;
if (updateLocalZ) selfLocalPosition.z = localPosition.z;
transform.localPosition = selfLocalPosition;
}
}
}