public override void Execute(float d)
    {
        PointerEventData pointerData = new PointerEventData(EventSystem.current)
        {
            position = Input.mousePosition
        };

        List <RaycastResult> results = new List <RaycastResult>();

        EventSystem.current.RaycastAll(pointerData, results);

        IClickable c = null;

        foreach (RaycastResult r in results)
        {
            c = r.gameObject.GetComponentInParent <IClickable>();
            if (c != lastClickable && lastClickable != null && c != null)
            {
                lastClickable.OnDehighlight();
            }
            if (c != null)
            {
                lastClickable = c;
                c.OnHighlight();
                break;
            }
            else
            {
                if (lastClickable != null)
                {
                    lastClickable.OnDehighlight();
                    lastClickable = null;
                }
                //Runs for any object that is not clickable
            }
        }
    }