object OnPanelOpened(object sender, object args)
    {
        ARGUIPanel panel;

        if (args is ARGUIPanel)
        {
            panel = (ARGUIPanel)args;

            foreach (var ARPanel in ARGUIPanels)
            {
                ARPanel.SetActive(false);
            }

            panel.SetActive(true);

            switch (panel.panelType)
            {
            case PanelType.Camera:
                _PanelTargetPos = panel.GetInversedInitialPos();
                LaunchFeed();
                break;

            case PanelType.PatientDetails:
            case PanelType.Radiographs:
            case PanelType.SurgeryMovement:
            case PanelType.SurgicalSimulation:
                StopFeed();
                _currentDetailPanel = panel.GetComponent <ARDetailPanel>();
                _PanelTargetPos     = panel.GetInversedInitialPos();
                break;

            case PanelType.Video:
                StopFeed();
                _PanelTargetPos = panel.GetInversedInitialPos();
                break;

            case PanelType.Home:
                StopFeed();
                _HomeTargetPos = Vector2.zero;
                break;
            }

            _currentPanelIdx = Array.IndexOf(ARGUIPanels, panel);

            string msg = panel.panelHeader;
            Core.BroadcastEvent("OnUpdateHeader", this, msg);
        }

        return(null);
    }