From 8b24847c31267eab382fe994672fd83c620eb3d3 Mon Sep 17 00:00:00 2001 From: Xenira <1288524+Xenira@users.noreply.github.com> Date: Sun, 17 Mar 2024 02:08:07 +0100 Subject: [PATCH] feat(behaviour): add interactable (#22) --- plugin/src/objects/behaviours/Interactable.cs | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 plugin/src/objects/behaviours/Interactable.cs diff --git a/plugin/src/objects/behaviours/Interactable.cs b/plugin/src/objects/behaviours/Interactable.cs new file mode 100644 index 0000000..58b31c6 --- /dev/null +++ b/plugin/src/objects/behaviours/Interactable.cs @@ -0,0 +1,41 @@ +using System; +using PiUtils.Util; +using UnityEngine; + +namespace PiUtils.Objects.Behaviours; + +public class Interactable : MonoBehaviour +{ + private static PluginLogger Logger = PluginLogger.GetLogger(); + + public Transform interactionTransform; + public float radius = 0.1f; + public event Action OnEnter; + public event Action OnExit; + + public bool isHovered { get; private set; } = false; + + private void Update() + { + if (interactionTransform == null) + { + return; + } + + float distance = Vector3.Distance(interactionTransform.position, transform.position); + if (distance <= radius && !isHovered) + { + Logger.LogDebug($"Hovered {gameObject.name}"); + isHovered = true; + OnEnter?.Invoke(); + return; + } + + if (distance > radius && isHovered) + { + Logger.LogDebug($"Unhovered {gameObject.name}"); + isHovered = false; + OnExit?.Invoke(); + } + } +}