/// <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(); } }
/// <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); } }
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 }
/// <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 }
/// <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); } }