/// <summary>
        /// Primarily handles click events on hovered nodes/segments
        /// </summary>
        protected override void OnToolUpdate()
        {
            base.OnToolUpdate();
            //Log._Debug($"OnToolUpdate");

            if (Input.GetKeyUp(KeyCode.PageDown))
            {
                InfoManager.instance.SetCurrentMode(InfoManager.InfoMode.Traffic, InfoManager.SubInfoMode.Default);
                UIView.library.Hide("TrafficInfoViewPanel");
            }
            else if (Input.GetKeyUp(KeyCode.PageUp))
            {
                InfoManager.instance.SetCurrentMode(InfoManager.InfoMode.None, InfoManager.SubInfoMode.Default);
            }

            _mouseDown = Input.GetMouseButton(0);

            if (_mouseDown)
            {
                if (_mouseClicked)
                {
                    return;
                }

                _mouseClicked = true;

                bool elementsHovered = determineHoveredElements();

                if (!elementsHovered || (activeSubTool != null && activeSubTool.IsCursorInPanel()))
                {
                    //Log.Message("inside ui: " + m_toolController.IsInsideUI + " visible: " + Cursor.visible + " in secondary panel: " + _cursorInSecondaryPanel);
                    return;
                }
                if (HoveredSegmentId == 0 && HoveredNodeId == 0)
                {
                    //Log.Message("no hovered segment");
                    return;
                }

                if (activeSubTool != null)
                {
                    activeSubTool.OnClickOverlay();
                }
            }
            else
            {
                //showTooltip(false, null, Vector3.zero);
                _mouseClicked = false;
            }
        }
        /// <summary>
        /// Primarily handles click events on hovered nodes/segments
        /// </summary>
        protected override void OnToolUpdate()
        {
            base.OnToolUpdate();
            //Log._Debug($"OnToolUpdate");

            if (Input.GetKeyUp(KeyCode.PageDown))
            {
                InfoManager.instance.SetCurrentMode(InfoManager.InfoMode.Traffic, InfoManager.SubInfoMode.Default);
                UIView.library.Hide("TrafficInfoViewPanel");
            }
            else if (Input.GetKeyUp(KeyCode.PageUp))
            {
                InfoManager.instance.SetCurrentMode(InfoManager.InfoMode.None, InfoManager.SubInfoMode.Default);
            }

            bool primaryMouseClicked   = Input.GetMouseButtonDown(0);
            bool secondaryMouseClicked = Input.GetMouseButtonDown(1);

            // check if clicked
            if (!primaryMouseClicked && !secondaryMouseClicked)
            {
                return;
            }

            // check if mouse is inside panel
            if (UIBase.GetMenu().containsMouse)
            {
#if DEBUG
                Log._Debug($"TrafficManagerTool: OnToolUpdate: Menu contains mouse. Ignoring click.");
#endif
                return;
            }

            bool elementsHovered = determineHoveredElements();

            if (/*!elementsHovered || (*/ activeSubTool != null && activeSubTool.IsCursorInPanel() /*)*/)
            {
#if DEBUG
                Log._Debug($"TrafficManagerTool: OnToolUpdate: Subtool contains mouse. Ignoring click.");
#endif
                //Log.Message("inside ui: " + m_toolController.IsInsideUI + " visible: " + Cursor.visible + " in secondary panel: " + _cursorInSecondaryPanel);
                return;
            }

            /*if (HoveredSegmentId == 0 && HoveredNodeId == 0) {
             *      //Log.Message("no hovered segment");
             *      return;
             * }*/

            if (activeSubTool != null)
            {
                if (primaryMouseClicked)
                {
                    activeSubTool.OnPrimaryClickOverlay();
                }

                if (secondaryMouseClicked)
                {
                    activeSubTool.OnSecondaryClickOverlay();
                }
            }
        }