38 lines
1.3 KiB
C#
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;
|
|
}
|
|
}
|
|
} |