/// <summary> /// Internal callback when a permissions event happens. /// </summary> /// <param name="permissionsGranted">If set to <c>true</c> permissions granted.</param> private void _OnTangoApplicationPermissionsEvent(bool permissionsGranted) { if (permissionsGranted) { m_tangoApplication.InitApplication(); // Load the most recent ADF. PoseProvider.RefreshADFList(); UUIDUnityHolder latestAreaDescription = PoseProvider.GetLatestADFUUID(); if (latestAreaDescription != null) { string uuid = latestAreaDescription.GetStringDataUUID(); m_tangoApplication.InitProviders(uuid); } else { m_tangoApplication.InitProviders(null); } m_tangoApplication.ConnectToService(); } else { AndroidHelper.ShowAndroidToastMessage("Motion Tracking and Area Learning Permissions Needed", true); } }
/// <summary> /// Thread method to save an ADF. Make this the ThreadFunc. /// </summary> /// <param name="rawName">Name of the ADF. Must be a string.</param> private void _SaveADFInBackground(object rawName) { UUIDUnityHolder adfUnityHolder = new UUIDUnityHolder(); string name = (string)rawName; if (PoseProvider.SaveAreaDescription(adfUnityHolder) == Common.ErrorType.TANGO_SUCCESS) { PoseProvider.GetAreaDescriptionMetaData(adfUnityHolder); PoseProvider.AreaDescriptionMetaData_set(Common.MetaDataKeyType.KEY_NAME, name, adfUnityHolder); PoseProvider.SaveAreaDescriptionMetaData(adfUnityHolder); } else { // Setting a bool is atomic. m_adfSaveFailed = true; } }
/// <summary> /// Refreshs the ADF picker list UI. /// </summary> /// <param name="list">List to use.</param> private void RefreshADFPickerList(UUID_list list) { foreach (Transform child in transform) { Destroy(child.gameObject); } int numberOfADFs = list.Count; Vector3 startPosition = transform.position; for (int i = 0; i < numberOfADFs; i++) { UUIDUnityHolder adf = list.GetADFAtIndex(i); Dictionary <string, string> adfMeta = adf.uuidMetaData.GetMetaDataKeyValues(); string uuid = adfMeta["id"]; string name = adfMeta["name"]; GameObject button = (GameObject)Instantiate(adfPickerButtonPrototype, startPosition + (i * buttonOffsets), Quaternion.identity); button.GetComponent <ADFPickerButton>().SetTitles(name, uuid); } }
void Update() { if (startedSaving) { if (keyboard.done) { savedAdfHolder = new UUIDUnityHolder(); keyboardString = keyboard.text; PoseProvider.SaveAreaDescription(savedAdfHolder); PoseProvider.GetAreaDescriptionMetaData(savedAdfHolder); PoseProvider.AreaDescriptionMetaData_set(Common.MetaDataKeyType.KEY_NAME, keyboardString, savedAdfHolder); PoseProvider.SaveAreaDescriptionMetaData(savedAdfHolder); // Null terminator will cause invalid argument in the file system. string uuid = savedAdfHolder.GetStringDataUUID().Replace("\0", ""); string path = Application.persistentDataPath + "/" + uuid; FileParser.SaveBuildingDataToPath(BuildingManager.instance.buildingList, path); EventManager.instance.GameDataSaved(true); startedSaving = false; } } }
/// <summary> /// Start is called after Awake.Make any initilizations here. /// </summary> void Start() { m_tangoApplication = FindObjectOfType <TangoApplication>(); m_adfUnityHolder = new UUIDUnityHolder(); m_keyboardState = KeyboardState.NONE; }