using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; #pragma warning disable CS0649 #if EPO_DOTWEEN using DG.Tweening; #endif namespace EPOOutline.Demo { public class InteractableObject : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler { [SerializeField] private AudioClip interactionSound; [SerializeField] private bool affectOutlinable = true; private Outlinable outlinable; private void Start() { if (!affectOutlinable) return; outlinable = GetComponent(); #if !EPO_DOTWEEN outlinable.enabled = false; #else outlinable.FrontParameters.DOColor(new Color(0, 0, 1, 0), 0.0f); outlinable.FrontParameters.DODilateShift(1.0f, 0.0f); outlinable.FrontParameters.DOBlurShift(0.0f, 0.0f); #endif outlinable.FrontParameters.FillPass.SetFloat("_PublicAngle", 35.0f); } public void OnPointerEnter(PointerEventData eventData) { if (!affectOutlinable) return; #if !EPO_DOTWEEN outlinable.enabled = true; #else outlinable.FrontParameters.DOKill(true); outlinable.FrontParameters.DOColor(new Color(0, 1, 0, 1), 0.5f); outlinable.FrontParameters.DOBlurShift(1.0f, 0.5f).SetDelay(0.5f); outlinable.FrontParameters.DODilateShift(0.0f, 0.5f).SetDelay(0.5f); outlinable.FrontParameters.DOColor(new Color(1, 1, 0, 1), 0.5f).SetDelay(1.0f); #endif } public void OnPointerExit(PointerEventData eventData) { if (!affectOutlinable) return; #if !EPO_DOTWEEN outlinable.enabled = false; #else outlinable.FrontParameters.DOKill(true); outlinable.FrontParameters.DOBlurShift(0.0f, 0.5f); outlinable.FrontParameters.DODilateShift(1.0f, 0.5f); outlinable.FrontParameters.DOColor(new Color(0, 0, 1, 0), 0.5f).SetDelay(0.5f); #endif } public void OnPointerClick(PointerEventData eventData) { AudioSource.PlayClipAtPoint(interactionSound, transform.position, 1.0f); } } }