File size: 1,837 Bytes
c80142e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using UnityEngine;
using TMPro;

public class InteractManager : MonoBehaviour
{
    private StarterAssetsInputs _input;
    public TextMeshProUGUI tooltip;

    private InteractHandler currentHoverTarget;
    [SerializeField] private bool canInteract = false;

    void Start()
    {
        _input = GetComponent<StarterAssetsInputs>();
        HideToolTip();
    }

    void Update()
    {
        if (!canInteract) {
            HideToolTip();
            return;
        }

        Ray ray = new Ray(Camera.main.transform.position, Camera.main.transform.forward);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            InteractHandler interactObject = hit.collider.GetComponent<InteractHandler>();

            if (interactObject != null && interactObject.interactable)
            {
                // Show tooltip if it's a new object
                if (interactObject != currentHoverTarget)
                {
                    currentHoverTarget = interactObject;
                    ShowToolTip(interactObject.tooltipText);
                }

                // Interact on key press
                if (_input != null && _input.interact)
                {
                   interactObject.InteractLogic();
                }

                return;
            }
        }

        if (currentHoverTarget != null)
        {
            currentHoverTarget = null;
            HideToolTip();
        }
    }

    public void ShowToolTip(string message)
    {
        tooltip.text = message;
        tooltip.gameObject.SetActive(true);
    }

    public void HideToolTip()
    {
        tooltip.gameObject.SetActive(false);
    }

    public void UnlockInteract(bool unlock)
    {
        canInteract = unlock;
    }
}