/// <summary>
    /// Unity OnGUI function.
    ///
    /// Mainly for removing markers.
    /// </summary>
    public void OnGUI()
    {
        if (m_selectedMarker != null)
        {
            Renderer selectedRenderer = m_selectedMarker.GetComponent <Renderer>();

            // GUI's Y is flipped from the mouse's Y
            Rect  screenRect = _WorldBoundsToScreen(Camera.main, selectedRenderer.bounds);
            float yMin       = Screen.height - screenRect.yMin;
            float yMax       = Screen.height - screenRect.yMax;
            screenRect.yMin = Mathf.Min(yMin, yMax);
            screenRect.yMax = Mathf.Max(yMin, yMax);

            if (GUI.Button(screenRect, "<size=30>Hide</size>"))
            {
                m_markerList.Remove(m_selectedMarker.gameObject);
                m_selectedMarker.SendMessage("Hide");
                m_selectedMarker = null;
                m_selectedRect   = new Rect();
            }
            else
            {
                m_selectedRect = screenRect;
            }
        }
        else
        {
            m_selectedRect = new Rect();
        }
    }
示例#2
0
    /// <summary>
    /// Display simple GUI.
    /// </summary>
    public void OnGUI()
    {
        Rect distortionButtonRec = new Rect(UI_BUTTON_GAP_X,
                                            Screen.height - UI_BUTTON_SIZE_Y - UI_BUTTON_GAP_X,
                                            UI_BUTTON_SIZE_X,
                                            UI_BUTTON_SIZE_Y);
        string isOn = m_arCameraPostProcess.enabled ? "Off" : "On";

        if (GUI.Button(distortionButtonRec,
                       UI_FONT_SIZE + "Turn Distortion " + isOn + "</size>"))
        {
            m_arCameraPostProcess.enabled = !m_arCameraPostProcess.enabled;
        }

        if (m_showDebug && m_tangoApplication.HasRequestedPermissions())
        {
            Color oldColor = GUI.color;
            GUI.color = Color.white;

            GUI.color = Color.black;
            GUI.Label(new Rect(UI_LABEL_START_X,
                               UI_LABEL_START_Y,
                               UI_LABEL_SIZE_X,
                               UI_LABEL_SIZE_Y),
                      UI_FONT_SIZE + String.Format(UX_TANGO_SERVICE_VERSION, m_tangoServiceVersion) + "</size>");

            GUI.Label(new Rect(UI_LABEL_START_X,
                               UI_FPS_LABEL_START_Y,
                               UI_LABEL_SIZE_X,
                               UI_LABEL_SIZE_Y),
                      UI_FONT_SIZE + m_fpsText + "</size>");

            // MOTION TRACKING
            GUI.Label(new Rect(UI_LABEL_START_X,
                               UI_POSE_LABEL_START_Y - UI_LABEL_OFFSET,
                               UI_LABEL_SIZE_X,
                               UI_LABEL_SIZE_Y),
                      UI_FONT_SIZE + String.Format(UX_TARGET_TO_BASE_FRAME, "Device", "Start") + "</size>");

            Vector3    pos            = m_tangoPose.transform.position;
            Quaternion quat           = m_tangoPose.transform.rotation;
            string     positionString = pos.x.ToString(UI_FLOAT_FORMAT) + ", " +
                                        pos.y.ToString(UI_FLOAT_FORMAT) + ", " +
                                        pos.z.ToString(UI_FLOAT_FORMAT);
            string rotationString = quat.x.ToString(UI_FLOAT_FORMAT) + ", " +
                                    quat.y.ToString(UI_FLOAT_FORMAT) + ", " +
                                    quat.z.ToString(UI_FLOAT_FORMAT) + ", " +
                                    quat.w.ToString(UI_FLOAT_FORMAT);
            string statusString = String.Format(UX_STATUS,
                                                _GetLoggingStringFromPoseStatus(m_tangoPose.m_poseStatus),
                                                _GetLoggingStringFromFrameCount(m_tangoPose.m_poseCount),
                                                positionString, rotationString);
            GUI.Label(new Rect(UI_LABEL_START_X,
                               UI_POSE_LABEL_START_Y,
                               UI_LABEL_SIZE_X,
                               UI_LABEL_SIZE_Y),
                      UI_FONT_SIZE + statusString + "</size>");
            GUI.color = oldColor;
        }

        if (m_selectedMarker != null)
        {
            Renderer selectedRenderer = m_selectedMarker.GetComponent <Renderer>();

            // GUI's Y is flipped from the mouse's Y
            Rect  screenRect = WorldBoundsToScreen(Camera.main, selectedRenderer.bounds);
            float yMin       = Screen.height - screenRect.yMin;
            float yMax       = Screen.height - screenRect.yMax;
            screenRect.yMin = Mathf.Min(yMin, yMax);
            screenRect.yMax = Mathf.Max(yMin, yMax);

            if (GUI.Button(screenRect, "<size=30>Hide</size>"))
            {
                m_selectedMarker.SendMessage("Hide");
                m_selectedMarker = null;
                m_selectedRect   = new Rect();
            }
            else
            {
                m_selectedRect = screenRect;
            }
        }
        else
        {
            m_selectedRect = new Rect();
        }

        if (GameObject.FindObjectOfType <ARMarker>() != null)
        {
            m_hideAllRect = new Rect(Screen.width - UI_BUTTON_SIZE_X - UI_BUTTON_GAP_X,
                                     Screen.height - UI_BUTTON_SIZE_Y - UI_BUTTON_GAP_X,
                                     UI_BUTTON_SIZE_X,
                                     UI_BUTTON_SIZE_Y);
            if (GUI.Button(m_hideAllRect, "<size=30>Hide All</size>"))
            {
                foreach (ARMarker marker in GameObject.FindObjectsOfType <ARMarker>())
                {
                    marker.SendMessage("Hide");
                }
            }
        }
        else
        {
            m_hideAllRect = new Rect(0, 0, 0, 0);
        }
    }
示例#3
0
    public void OnGUI()
    {
        if (m_selectedMarker != null)
        {
            Renderer selectedRenderer = m_selectedMarker.GetComponent <Renderer>();

            // GUI's Y is flipped from the mouse's Y
            Rect  screenRect = _WorldBoundsToScreen(Camera.main, selectedRenderer.bounds);
            float yMin       = Screen.height - screenRect.yMin;
            float yMax       = Screen.height - screenRect.yMax;
            screenRect.yMin = Mathf.Min(yMin, yMax);
            screenRect.yMax = Mathf.Max(yMin, yMax);

            if (GUI.Button(screenRect, "<size=30>Hide</size>"))
            {
                m_markerList.Remove(m_selectedMarker.gameObject);
                m_selectedMarker.SendMessage("Hide");
                m_selectedMarker = null;
                m_selectedRect   = new Rect();
            }
            else
            {
                m_selectedRect = screenRect;
            }
        }
        else
        {
            m_selectedRect = new Rect();
        }

#if UNITY_EDITOR
        // Handle text input when there is no device keyboard in the editor.
        if (m_displayGuiTextInput)
        {
            Rect textBoxRect = new Rect(100,
                                        Screen.height - 200,
                                        Screen.width - 200,
                                        100);

            Rect okButtonRect = textBoxRect;
            okButtonRect.y     += 100;
            okButtonRect.width /= 2;

            Rect cancelButtonRect = okButtonRect;
            cancelButtonRect.x = textBoxRect.center.x;

            GUI.SetNextControlName("TextField");
            GUIStyle customTextFieldStyle = new GUIStyle(GUI.skin.textField);
            customTextFieldStyle.alignment = TextAnchor.MiddleCenter;
            m_guiTextInputContents         =
                GUI.TextField(textBoxRect, m_guiTextInputContents, customTextFieldStyle);
            GUI.FocusControl("TextField");

            if (GUI.Button(okButtonRect, "OK") ||
                (Event.current.type == EventType.keyDown && Event.current.character == '\n'))
            {
                m_displayGuiTextInput = false;
                m_guiTextInputResult  = true;
            }
            else if (GUI.Button(cancelButtonRect, "Cancel"))
            {
                m_displayGuiTextInput = false;
                m_guiTextInputResult  = false;
            }
        }
#endif
    }
示例#4
0
    /// <summary>
    /// Display simple GUI.
    /// </summary>
    public void OnGUI()
    {
        Rect distortionButtonRec = new Rect(UI_BUTTON_GAP_X,
                                            Screen.height - UI_BUTTON_SIZE_Y - UI_BUTTON_GAP_X,
                                            UI_BUTTON_SIZE_X,
                                            UI_BUTTON_SIZE_Y);
        string isOn = m_arCameraPostProcess.enabled ? "Off" : "On";

        if (GUI.Button(distortionButtonRec,
                       UI_FONT_SIZE + "Turn Distortion " + isOn + "</size>"))
        {
            m_arCameraPostProcess.enabled = !m_arCameraPostProcess.enabled;
        }

        if (m_showDebug && m_tangoApplication.HasRequestedPermissions())
        {
            Color oldColor = GUI.color;
            GUI.color = Color.white;

            GUI.color = Color.black;
            GUI.Label(new Rect(UI_LABEL_START_X,
                               UI_LABEL_START_Y,
                               UI_LABEL_SIZE_X,
                               UI_LABEL_SIZE_Y),
                      UI_FONT_SIZE + String.Format(UX_TANGO_SERVICE_VERSION, m_tangoServiceVersion) + "</size>");

            GUI.Label(new Rect(UI_LABEL_START_X,
                               UI_FPS_LABEL_START_Y,
                               UI_LABEL_SIZE_X,
                               UI_LABEL_SIZE_Y),
                      UI_FONT_SIZE + m_fpsText + "</size>");

            // MOTION TRACKING
            GUI.Label(new Rect(UI_LABEL_START_X,
                               UI_POSE_LABEL_START_Y - UI_LABEL_OFFSET,
                               UI_LABEL_SIZE_X,
                               UI_LABEL_SIZE_Y),
                      UI_FONT_SIZE + String.Format(UX_TARGET_TO_BASE_FRAME, "Device", "Start") + "</size>");

            Vector3    pos            = m_tangoPose.transform.position;
            Quaternion quat           = m_tangoPose.transform.rotation;
            string     positionString = pos.x.ToString(UI_FLOAT_FORMAT) + ", " +
                                        pos.y.ToString(UI_FLOAT_FORMAT) + ", " +
                                        pos.z.ToString(UI_FLOAT_FORMAT);
            string rotationString = quat.x.ToString(UI_FLOAT_FORMAT) + ", " +
                                    quat.y.ToString(UI_FLOAT_FORMAT) + ", " +
                                    quat.z.ToString(UI_FLOAT_FORMAT) + ", " +
                                    quat.w.ToString(UI_FLOAT_FORMAT);
            string statusString = String.Format(UX_STATUS,
                                                _GetLoggingStringFromPoseStatus(m_tangoPose.m_poseStatus),
                                                _GetLoggingStringFromFrameCount(m_tangoPose.m_poseCount),
                                                positionString, rotationString);
            GUI.Label(new Rect(UI_LABEL_START_X,
                               UI_POSE_LABEL_START_Y,
                               UI_LABEL_SIZE_X,
                               UI_LABEL_SIZE_Y),
                      UI_FONT_SIZE + statusString + "</size>");
            GUI.color = oldColor;
        }

        if (m_selectedMarker != null)
        {
            Renderer selectedRenderer = m_selectedMarker.GetComponent <Renderer>();

            // GUI's Y is flipped from the mouse's Y
            Rect  screenRect = WorldBoundsToScreen(Camera.main, selectedRenderer.bounds);
            float yMin       = Screen.height - screenRect.yMin;
            float yMax       = Screen.height - screenRect.yMax;
            screenRect.yMin = Mathf.Min(yMin, yMax);
            screenRect.yMax = Mathf.Max(yMin, yMax);

            if (_fileBrowser == null && GUI.Button(screenRect, "<size=20>Delete</size>"))
            {
                m_selectedMarker.SendMessage("Hide");
                m_selectedMarker = null;
                m_selectedRect   = new Rect();
            }
            else
            {
                m_selectedRect = screenRect;
            }
        }
        else
        {
            m_selectedRect = new Rect();
        }

        if (GameObject.FindObjectOfType <ARMarker>() != null)
        {
            m_hideAllRect = new Rect(Screen.width - UI_BUTTON_SIZE_X * 0.75f - UI_BUTTON_GAP_X,
                                     Screen.height - UI_BUTTON_SIZE_Y - UI_BUTTON_GAP_X,
                                     UI_BUTTON_SIZE_X * 0.75f,
                                     UI_BUTTON_SIZE_Y);
            if (_fileBrowser == null && GUI.Button(m_hideAllRect, "<size=20>Reset</size>"))
            {
                foreach (ARMarker marker in GameObject.FindObjectsOfType <ARMarker>())
                {
                    marker.SendMessage("Hide");
                }
                #region Cfd
                _uiElementTriggered = true;
                _markerPositions.Clear();
                _errorCalcXform = false;
                _xformCalced    = false;
                showMarker      = true;
                return;

                #endregion
            }
            #region Cfd

            if (_markerPositions.Count >= 4)
            {
                var rect = new Rect(Screen.width - UI_BUTTON_SIZE_X * 1.5f - UI_BUTTON_GAP_X,
                                    Screen.height - UI_BUTTON_SIZE_Y - UI_BUTTON_GAP_X,
                                    UI_BUTTON_SIZE_X * 0.75f,
                                    UI_BUTTON_SIZE_Y);
                var txt = showMarker ? "Hide Marker" : "Show Marker";
                if (GUI.Button(rect, "<size=20>" + txt + "</size>"))
                {
                    _uiElementTriggered = true;
                    showMarker          = !showMarker;
                    foreach (ARMarker marker in GameObject.FindObjectsOfType <ARMarker>())
                    {
                        marker.GetComponent <Renderer>().enabled = showMarker;
                    }
                    return;
                }
            }

            #endregion
        }
        else
        {
            m_hideAllRect = new Rect(0, 0, 0, 0);
        }

        #region Cfd
        var oColor = GUI.color;

        GUI.color = Color.black;
        var msg = "Add 4 markers before loading and positioning CFD data.";
        if ((_markerPositions.Count >= 4 || !Application.isMobilePlatform) && _errorCalcXform)
        {
            msg = "Error encountered, please clear all markers and try again.";
        }
        GUI.Label(new Rect(UI_LABEL_GAP_X,
                           UI_LABEL_GAP_Y,
                           UI_LABEL_SIZE_X,
                           UI_LABEL_SIZE_Y),
                  UI_FONT_SIZE + msg + "</size>");
        GUI.color = oColor;

        if (_fileBrowser == null && (_markerPositions.Count >= 4 || !Application.isMobilePlatform))
        {
            Rect toggleRect = new Rect(Screen.width - UI_BUTTON_GAP_X - UI_BUTTON_SIZE_X,
                                       UI_BUTTON_GAP_Y,
                                       UI_TOGGLE_SIZE_X,
                                       UI_TOGGLE_SIZE_Y);
            float vmove = UI_TOGGLE_SIZE_Y + UI_BUTTON_GAP_Y;
            //data source toggle
            _dataFromServer = GUI.Toggle(toggleRect, _dataFromServer, "<size=20>Load Server Data</size>");
            if (_dataFromServer)
            {
                toggleRect = new Rect(Screen.width - UI_BUTTON_GAP_X - UI_BUTTON_SIZE_X,
                                      vmove + UI_BUTTON_GAP_Y,
                                      UI_TOGGLE_SIZE_X,
                                      UI_TOGGLE_SIZE_Y);
                _loadSliceByTouch = GUI.Toggle(toggleRect, _loadSliceByTouch, "<size=20>Load slice by touch</size>");
                vmove            += UI_TOGGLE_SIZE_Y + UI_BUTTON_GAP_Y;
            }
            int  it         = 0;
            Rect buttonRect = new Rect(Screen.width - UI_BUTTON_GAP_X - UI_BUTTON_SIZE_X,
                                       vmove + ((UI_BUTTON_GAP_Y + UI_BUTTON_SIZE_Y) * it),
                                       UI_BUTTON_SIZE_X,
                                       UI_BUTTON_SIZE_Y);
            //load file button
            if (GUI.Button(buttonRect, "<size=20>Load BIM/Scan</size>"))
            {
                _uiElementTriggered = true;
                _loadMode           = FileLoadMode.Scan;
                OnLoadFile();
                return;
            }
            if (_cfdManager.BaseFileLoaded)
            {
                it++;
                buttonRect = new Rect(Screen.width - UI_BUTTON_GAP_X - UI_BUTTON_SIZE_X,
                                      vmove + UI_BUTTON_GAP_Y + ((UI_BUTTON_GAP_Y + UI_BUTTON_SIZE_Y) * it),
                                      UI_BUTTON_SIZE_X,
                                      UI_BUTTON_SIZE_Y);
                string show = _cfdManager.ScannedActive ? "Hide" : "Show";
                if (GUI.Button(buttonRect, "<size=20>" + show + " BIM/Scan</size>"))
                {
                    _uiElementTriggered = true;
                    _cfdManager.SetScannedActive(!_cfdManager.ScannedActive);
                    return;
                }

                it++;
                buttonRect = new Rect(Screen.width - UI_BUTTON_GAP_X - UI_BUTTON_SIZE_X,
                                      vmove + UI_BUTTON_GAP_Y + ((UI_BUTTON_GAP_Y + UI_BUTTON_SIZE_Y) * it),
                                      UI_BUTTON_SIZE_X,
                                      UI_BUTTON_SIZE_Y);
                //load file button
                if (GUI.Button(buttonRect, "<size=20>Load CFD Slice</size>"))
                {
                    _uiElementTriggered = true;
                    _loadMode           = FileLoadMode.CFD;
                    if (_loadSliceByTouch)
                    {
                        _posingSlice = true;
                    }
                    else
                    {
                        OnLoadFile();
                    }
                    return;
                }

                it++;
                buttonRect = new Rect(Screen.width - UI_BUTTON_GAP_X - UI_BUTTON_SIZE_X,
                                      vmove + UI_BUTTON_GAP_Y + ((UI_BUTTON_GAP_Y + UI_BUTTON_SIZE_Y) * it),
                                      UI_BUTTON_SIZE_X,
                                      UI_BUTTON_SIZE_Y);
                //load file button
                if (GUI.Button(buttonRect, "<size=20>Load Tube</size>"))
                {
                    _uiElementTriggered = true;
                    _loadMode           = FileLoadMode.Tube;
                    OnLoadFile();
                    return;
                }
            }

            if (_cfdManager.TimeStepCount > 1)
            {
                it++;
                buttonRect = new Rect(Screen.width - UI_BUTTON_GAP_X - UI_BUTTON_SIZE_X,
                                      vmove + UI_BUTTON_GAP_Y + ((UI_BUTTON_GAP_Y + UI_BUTTON_SIZE_Y) * it),
                                      UI_BUTTON_SIZE_X,
                                      UI_BUTTON_SIZE_Y);
                //step switch button
                if (GUI.Button(buttonRect, "<size=20>Clear Slices/Tubes</size>"))
                {
                    _uiElementTriggered = true;
                    OnClearSliceTube();
                    return;
                }

                it++;
                buttonRect = new Rect(Screen.width - UI_BUTTON_GAP_X - UI_BUTTON_SIZE_X,
                                      vmove + UI_BUTTON_GAP_Y + ((UI_BUTTON_GAP_Y + UI_BUTTON_SIZE_Y) * it),
                                      UI_BUTTON_SIZE_X,
                                      UI_BUTTON_SIZE_Y);
                //step switch button
                if (GUI.Button(buttonRect, "<size=20>Next Step</size>"))
                {
                    _uiElementTriggered = true;
                    OnNextStep();
                    return;
                }

                foreach (var cfdAttribute in _cfdManager.CfdAttributes)
                {
                    it++;
                    buttonRect = new Rect(Screen.width - UI_BUTTON_GAP_X - UI_BUTTON_SIZE_X,
                                          vmove + UI_BUTTON_GAP_Y + ((UI_BUTTON_GAP_Y + UI_BUTTON_SIZE_Y) * it),
                                          UI_BUTTON_SIZE_X,
                                          UI_BUTTON_SIZE_Y);
                    //step switch button
                    if (GUI.Button(buttonRect, "<size=20>" + cfdAttribute + "</size>"))
                    {
                        _uiElementTriggered = true;
                        OnSwitchToAttrib(cfdAttribute);
                        return;
                    }
                }
            }
        }

        //draw and display output
        if (_fileBrowser != null && _fileBrowser.draw()) //true is returned when a file has been selected
                                                         //the output file is a member if the FileInfo class, if cancel was selected the value is null
        {
            if (_fileBrowser.outputFile != null)
            {
                _uiElementTriggered = true;

                var output = _fileBrowser.outputFile;
                _fileBrowser = null;
                bool fromSvr = false;
                if (_svrFileList.Count > 0)
                {
                    _svrFileList.Clear();
                    fromSvr = true;
                }
                switch (_loadMode)
                {
                case FileLoadMode.Scan:
                    if (fromSvr)
                    {
                        _cfdManager.LoadDataFromServer("scan/" + output.Name, output.Name, p => _cfdManager.LoadScanned(p));
                    }
                    else
                    {
                        _cfdManager.LoadScanned(output.FullName);
                    }
                    break;

                case FileLoadMode.CFD:
                    if (fromSvr)
                    {
                        _cfdManager.LoadDataFromServer("slices/" + output.Name, output.Name,
                                                       p => _cfdManager.LoadCfd(p));
                    }
                    else
                    {
                        _cfdManager.LoadCfd(output.FullName);
                    }
                    _cfdManager.ResetTimeStep();
                    break;

                case FileLoadMode.Tube:
                    if (fromSvr)
                    {
                        _cfdManager.LoadDataFromServer("tubes/" + output.Name, output.Name,
                                                       p => _cfdManager.LoadTube(p));
                    }
                    else
                    {
                        _cfdManager.LoadTube(output.FullName);
                    }
                    _cfdManager.ResetTimeStep();
                    break;
                }
            }
            _fileBrowser = null;
            return;
        }

        _uiElementTriggered = false;
        #endregion
    }
示例#5
0
    /// <summary>
    /// Display simple GUI.
    /// </summary>
    public void OnGUI()
    {
        if (GameObject.FindObjectOfType <ARMarker> () == null)
        {
            Texture2D placeTableTexture = (Texture2D)Resources.Load("PlaceTable");
            Rect      playRect          = new Rect((Screen.width - 1206) / 2, 20, 1206, 109);
            GUI.Button(playRect, placeTableTexture);
        }

        if (GameObject.FindObjectOfType <ARMarker> () != null && beerPongComponent != null && !beerPongComponent.isActive)
        {
            Rect distortionButtonRec = new Rect(Screen.width - UI_BUTTON_SIZE_X - UI_BUTTON_GAP_X,
                                                Screen.height - UI_BUTTON_SIZE_Y - UI_BUTTON_GAP_X,
                                                UI_BUTTON_SIZE_X,
                                                UI_BUTTON_SIZE_Y);
            if (GUI.Button(distortionButtonRec,
                           UI_FONT_SIZE + "Continue" + "</size>"))
            {
                GameObject.DestroyImmediate(m_canvas.gameObject);

                if (beerPongComponent != null)
                {
                    beerPongComponent.ActivateGame();
                }
                Debug.Log("Activated game elements");
                //Logic for Continue button goes here
            }
        }

        if (m_showDebug && m_tangoApplication.HasRequestedPermissions())
        {
            Color oldColor = GUI.color;
            GUI.color = Color.white;

            GUI.color = Color.black;
            GUI.Label(new Rect(UI_LABEL_START_X,
                               UI_LABEL_START_Y,
                               UI_LABEL_SIZE_X,
                               UI_LABEL_SIZE_Y),
                      UI_FONT_SIZE + String.Format(UX_TANGO_SERVICE_VERSION, m_tangoServiceVersion) + "</size>");

            GUI.Label(new Rect(UI_LABEL_START_X,
                               UI_FPS_LABEL_START_Y,
                               UI_LABEL_SIZE_X,
                               UI_LABEL_SIZE_Y),
                      UI_FONT_SIZE + m_fpsText + "</size>");

            // MOTION TRACKING
            GUI.Label(new Rect(UI_LABEL_START_X,
                               UI_POSE_LABEL_START_Y - UI_LABEL_OFFSET,
                               UI_LABEL_SIZE_X,
                               UI_LABEL_SIZE_Y),
                      UI_FONT_SIZE + String.Format(UX_TARGET_TO_BASE_FRAME, "Device", "Start") + "</size>");

            Vector3    pos            = m_tangoPose.transform.position;
            Quaternion quat           = m_tangoPose.transform.rotation;
            string     positionString = pos.x.ToString(UI_FLOAT_FORMAT) + ", " +
                                        pos.y.ToString(UI_FLOAT_FORMAT) + ", " +
                                        pos.z.ToString(UI_FLOAT_FORMAT);
            string rotationString = quat.x.ToString(UI_FLOAT_FORMAT) + ", " +
                                    quat.y.ToString(UI_FLOAT_FORMAT) + ", " +
                                    quat.z.ToString(UI_FLOAT_FORMAT) + ", " +
                                    quat.w.ToString(UI_FLOAT_FORMAT);
            string statusString = String.Format(UX_STATUS,
                                                _GetLoggingStringFromPoseStatus(m_tangoPose.m_poseStatus),
                                                _GetLoggingStringFromFrameCount(m_tangoPose.m_poseCount),
                                                positionString, rotationString);
            GUI.Label(new Rect(UI_LABEL_START_X,
                               UI_POSE_LABEL_START_Y,
                               UI_LABEL_SIZE_X,
                               UI_LABEL_SIZE_Y),
                      UI_FONT_SIZE + statusString + "</size>");
            GUI.color = oldColor;
        }

        if (m_selectedMarker != null)
        {
            Renderer selectedRenderer = m_selectedMarker.GetComponent <Renderer>();

            // GUI's Y is flipped from the mouse's Y
            Rect  screenRect = WorldBoundsToScreen(Camera.main, selectedRenderer.bounds);
            float yMin       = Screen.height - screenRect.yMin;
            float yMax       = Screen.height - screenRect.yMax;
            screenRect.yMin = Mathf.Min(yMin, yMax);
            screenRect.yMax = Mathf.Max(yMin, yMax);

            if (GUI.Button(screenRect, "<size=30>Hide</size>"))
            {
                m_selectedMarker.SendMessage("Hide");
                m_selectedMarker = null;
                m_selectedRect   = new Rect();
            }
            else
            {
                m_selectedRect = screenRect;
            }
        }
        else
        {
            m_selectedRect = new Rect();
        }

        if (GameObject.FindObjectOfType <ARMarker>() != null && beerPongComponent != null && !beerPongComponent.isActive)
        {
            Texture2D placeTableTexture = (Texture2D)Resources.Load("DragTable");
            Rect      playRect          = new Rect((Screen.width - 790) / 2, 20, 790, 109);
            GUI.Button(playRect, placeTableTexture);



            m_hideAllRect = new Rect(UI_BUTTON_GAP_X,
                                     Screen.height - UI_BUTTON_SIZE_Y - UI_BUTTON_GAP_X,
                                     UI_BUTTON_SIZE_X,
                                     UI_BUTTON_SIZE_Y);
            if (GUI.Button(m_hideAllRect, "<size=30>Place Again</size>"))
            {
                foreach (ARMarker marker in GameObject.FindObjectsOfType <ARMarker>())
                {
                    marker.SendMessage("Hide");
                }
            }
        }
        else
        {
            m_hideAllRect = new Rect(0, 0, 0, 0);
        }
    }