/// <summary> /// Actually do the Area Description save. /// </summary> /// <returns>Coroutine IEnumerator.</returns> private IEnumerator _DoSaveCurrentAreaDescription() { if (TouchScreenKeyboard.visible || m_saveThread != null) { yield break; } TouchScreenKeyboard kb = TouchScreenKeyboard.Open("Unnamed"); while (!kb.done && !kb.wasCanceled) { yield return null; } if (kb.done) { // Disable interaction before saving. m_initialized = false; m_savingText.gameObject.SetActive(true); if (m_tangoApplication.m_enableAreaLearning) { m_saveThread = new Thread(delegate() { // Start saving process in another thread. m_curAreaDescription = AreaDescription.SaveCurrent(); AreaDescription.Metadata metadata = m_curAreaDescription.GetMetadata(); metadata.m_name = kb.text; m_curAreaDescription.SaveMetadata(metadata); }); m_saveThread.Start(); } else { _SaveMarkerToDisk(); Application.LoadLevel(Application.loadedLevel); } } }
/// <summary> /// Select a specific Area Description to show details. /// </summary> /// <param name="areaDescription">Area Description to show details for, or <c>null</c> if details should be hidden.</param> private void _SelectAreaDescription(AreaDescription areaDescription) { m_selectedAreaDescription = areaDescription; if (areaDescription != null) { m_selectedMetadata = areaDescription.GetMetadata(); m_detailsParent.gameObject.SetActive(true); m_detailsDate.text = m_selectedMetadata.m_dateTime.ToLongDateString() + ", " + m_selectedMetadata.m_dateTime.ToLongTimeString(); m_detailsEditableName.text = m_selectedMetadata.m_name; m_detailsEditablePosX.text = m_selectedMetadata.m_transformationPosition[0].ToString(); m_detailsEditablePosY.text = m_selectedMetadata.m_transformationPosition[1].ToString(); m_detailsEditablePosZ.text = m_selectedMetadata.m_transformationPosition[2].ToString(); m_detailsEditableRotQX.text = m_selectedMetadata.m_transformationRotation[0].ToString(); m_detailsEditableRotQY.text = m_selectedMetadata.m_transformationRotation[1].ToString(); m_detailsEditableRotQZ.text = m_selectedMetadata.m_transformationRotation[2].ToString(); m_detailsEditableRotQW.text = m_selectedMetadata.m_transformationRotation[3].ToString(); } else { m_selectedMetadata = null; m_detailsParent.gameObject.SetActive(false); } }
/// <summary> /// Actually do the Area Description save. /// </summary> /// <returns>Coroutine IEnumerator.</returns> private IEnumerator _DoSaveAreaDescriptionAndMesh() { if (m_saveThread != null) { yield break; } // Disable interaction before saving. m_initialized = false; m_savingText.text = "Saving Area Description..."; if (string.IsNullOrEmpty(m_savedUUID)) { m_saveThread = new Thread(delegate() { // Save the Area Description to file. m_curAreaDescription = AreaDescription.SaveCurrent(); AreaDescription.Metadata metadata = m_curAreaDescription.GetMetadata(); m_savedUUID = m_curAreaDescription.m_uuid; metadata.m_name = metadata.m_dateTime.ToLongTimeString(); m_curAreaDescription.SaveMetadata(metadata); // Save the tango dynamic mesh to file. StartCoroutine(_DoSaveTangoDynamicMesh()); }); m_saveThread.Start(); } else { StartCoroutine(_DoSaveTangoDynamicMesh()); } }