/* * Created by You Are Here LLC, 2020 * https://www.yahagency.com/ * * For questions or assistance please contact * pluginsupport@yahagency.com */ using UnityEngine; using UnityEngine.Events; namespace com.yah.LineRendererDemo { /// /// Small example of a TeleportNode sequence /// public class TPNode : YAH_MonoBehavior { public Transform lockPoint = null; //Event that fires when the Teleport method is called. [SerializeField] private UnityEvent OnTeleportEvent = null; [Header("TPNode References")] [SerializeField] private Renderer[] tpRenderers = null; [Header("Player Movement Params")] public Transform playerMovePos = null; [SerializeField] private ParticleSystem pulseParticleSystem = null; public bool isHovered = false; private ParticleSystem.EmissionModule pulseEmitter; private bool isTeleporting = false; private void Start() { isTeleporting = false; pulseEmitter = pulseParticleSystem.emission; } /// /// When user hovers over the Node /// public void OnHover() { if (!isHovered) { pulseEmitter.enabled = true; isHovered = true; foreach (Renderer r in tpRenderers) { foreach (Material m in r.materials) m.color = Color.green; } } } /// /// Reset method for when Hover is lost but not fired /// public void OnHoverLost() { if (isHovered) { pulseEmitter.enabled = false; pulseParticleSystem.Clear(); isHovered = false; foreach (Renderer r in tpRenderers) { foreach (Material m in r.materials) m.color = Color.clear; } } } /// /// When player triggers the TPNode /// public void Teleport() { if (!isTeleporting) { isTeleporting = true; OnHoverLost(); OnTeleportEvent.Invoke(); isTeleporting = false; this.gameObject.SetActive(false); } } } }