123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- using UnityEngine;
- using UnityEngine.EventSystems;
- namespace FfalconXR
- {
- public class UIHoverScaler : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
- {
- public Vector3 m_onHoverScaleValue = new Vector3(1.1f, 1.1f, 1.1f);
- public Vector3 m_onExitScaleValue = Vector3.one;
- public AnimationCurve m_scaleAnim = new AnimationCurve(new Keyframe(0, 0), new Keyframe(1, 1));
- public float m_animSpeed = 2;
- public bool m_is2D = true;
- private bool m_onFocus = false;
- private float m_curAnimTime;
- private void Awake()
- {
- }
- private void Update()
- {
- if (m_onFocus)
- {
- if (m_curAnimTime < 1)
- {
- m_curAnimTime += Time.deltaTime * m_animSpeed;
- if (m_curAnimTime > 1)
- {
- m_curAnimTime = 1;
- }
- float scaleValue = m_scaleAnim.Evaluate(m_curAnimTime);
- gameObject.transform.localScale = new Vector3(
- m_onExitScaleValue.x + (m_onHoverScaleValue.x - m_onExitScaleValue.x) * scaleValue
- , m_onExitScaleValue.y + (m_onHoverScaleValue.y - m_onExitScaleValue.y) * scaleValue
- , m_is2D ? 1 : (m_onExitScaleValue.z + (m_onHoverScaleValue.z - m_onExitScaleValue.z) * scaleValue));
- }
- }
- else
- {
- if (m_curAnimTime > 0)
- {
- m_curAnimTime -= Time.deltaTime * m_animSpeed;
- if (m_curAnimTime < 0)
- {
- m_curAnimTime = 0;
- }
- float scaleValue = m_scaleAnim.Evaluate(m_curAnimTime);
- gameObject.transform.localScale = new Vector3(
- m_onExitScaleValue.x + (m_onHoverScaleValue.x - m_onExitScaleValue.x) * scaleValue
- , m_onExitScaleValue.y + (m_onHoverScaleValue.y - m_onExitScaleValue.y) * scaleValue
- , m_is2D ? 1 : (m_onExitScaleValue.z + (m_onHoverScaleValue.z - m_onExitScaleValue.z) * scaleValue));
- }
- }
- }
- public void OnPointerEnter(PointerEventData eventData)
- {
- if (!gameObject.activeSelf) return;
- Debug.Log("Hover!!");
- m_onFocus = true;
- //gameObject.transform.localScale = m_onHoverScaleValue;
- }
- public void OnPointerExit(PointerEventData eventData)
- {
- if (!gameObject.activeSelf) return;
- m_onFocus = false;
- //gameObject.transform.localScale = m_onExitScaleValue;
- }
- }
- }
|