// Start is called before the first frame update
    void Awake()
    {
        m_RailGroup = GetComponent <RailGroup>();
        m_InteractableHoverEvents = GetComponent <Valve.VR.InteractionSystem.InteractableHoverEvents>();
        if (m_InteractableHoverEvents == null)
        {
            Transform tmpTransform = transform;
            for (int i = 0; i < 100; i++)
            {
                tmpTransform = tmpTransform.parent;
                if (tmpTransform != null)
                {
                    m_InteractableHoverEvents = tmpTransform.GetComponent <Valve.VR.InteractionSystem.InteractableHoverEvents>();
                }
                else
                {
                    break;
                }

                if (m_InteractableHoverEvents != null)
                {
                    break;
                }
            }
            if (m_InteractableHoverEvents == null)
            {
                m_InteractableHoverEvents = transform.GetComponentInChildren <Valve.VR.InteractionSystem.InteractableHoverEvents>();
            }
        }
    }
    // Start is called before the first frame update
    void Awake()
    {
        m_GLHandleVisuals_Group = GetComponent <GLHandleVisuals_Group>();
        if (m_InteractableHoverEvents == null)
        {
            m_InteractableHoverEvents = GetComponent <Valve.VR.InteractionSystem.InteractableHoverEvents>();
            m_interactable            = GetComponent <Valve.VR.InteractionSystem.Interactable>();
            m_throwable = GetComponent <Valve.VR.InteractionSystem.Throwable>();
            targetGO    = gameObject;
        }
        if (m_InteractableHoverEvents == null)
        {
            Transform tmpTransform = transform;
            for (int i = 0; i < 100; i++)
            {
                tmpTransform = tmpTransform.parent;
                if (tmpTransform != null)
                {
                    m_InteractableHoverEvents = tmpTransform.GetComponent <Valve.VR.InteractionSystem.InteractableHoverEvents>();
                    m_interactable            = tmpTransform.GetComponent <Valve.VR.InteractionSystem.Interactable>();
                    m_throwable = tmpTransform.GetComponent <Valve.VR.InteractionSystem.Throwable>();
                    targetGO    = tmpTransform.gameObject;
                }
                else
                {
                    break;
                }

                if (m_InteractableHoverEvents != null)
                {
                    break;
                }
            }
            if (m_InteractableHoverEvents == null)
            {
                m_InteractableHoverEvents = transform.GetComponentInChildren <Valve.VR.InteractionSystem.InteractableHoverEvents>();
                m_interactable            = transform.GetComponent <Valve.VR.InteractionSystem.Interactable>();
                m_throwable = transform.GetComponent <Valve.VR.InteractionSystem.Throwable>();
                targetGO    = transform.gameObject;
            }
            else if (m_InteractableHoverEvents == null)
            {
                Debug.Log("[" + transform.parent.name + "/" + gameObject.name + "] WARNING: Hovering on these gizmos will not work because the script couldn't auto-find the InteractableHoverEvents it should subscribe to. Assign it manually in the inspector.");
            }
        }

        if (m_interactable == null && m_InteractableHoverEvents != null)
        {
            m_interactable = m_InteractableHoverEvents.GetComponent <Valve.VR.InteractionSystem.Interactable>();
        }
        m_GLHandleVisuals_Group.interactableLinkedTo = getInteractable;
    }
 // Start is called before the first frame update
 void OnEnable()
 {
     m_interactable   = GetComponent <Valve.VR.InteractionSystem.Interactable>();
     m_interactableHE = GetComponent <Valve.VR.InteractionSystem.InteractableHoverEvents>();
 }
 void GetReferences()
 {
     m_interactable   = GetComponent <Valve.VR.InteractionSystem.Interactable>();
     m_interactableHE = GetComponent <Valve.VR.InteractionSystem.InteractableHoverEvents>();
     m_throwable      = GetComponent <Valve.VR.InteractionSystem.Throwable>();
 }