private IEnumerator CreatePerson(string name) { modalPanel.ShowProgress("Saving data, Please Wait ..."); Person p = null; AsyncTask <bool> task = new AsyncTask <bool>(() => { try { // update data in the cloud CloudUserManager groupMgr = CloudUserManager.Instance; if (groupMgr != null && persons != null) { p = groupMgr.AddUserToGroup(name, string.Empty); return(true); } return(false); } catch (Exception ex) { Debug.LogError("Failed to process task: " + ex.Message + "\n" + ex.StackTrace); return(false); } }); task.Start(); yield return(null); while (task.State == TaskState.Running) { yield return(null); } modalPanel.Hide(); if (!task.Result) { modalPanel.ShowMessage("Error saving data!"); } else { HidePersonDetails(); if (p != null) { persons.Add(p); InstantiatePersonPanel(p); } } yield return(null); }
// Creates new user and adds it to the user group private IEnumerator AddUserToGroup(Face face, string userName, string userInfo) { CloudUserManager userManager = CloudUserManager.Instance; if (texCamShot && userManager && face != null && userName != null && userName.Trim() != string.Empty) { SetHintText("Wait..."); yield return(null); FaceRectangle faceRect = face.faceRectangle; byte[] imageBytes = texCamShot.EncodeToJPG(); yield return(null); AsyncTask <Person> task = new AsyncTask <Person>(() => { return(userManager.AddUserToGroup(userName.Trim(), userInfo, imageBytes, faceRect)); }); task.Start(); yield return(null); while (task.State == TaskState.Running) { yield return(null); } // Get the resulting person Person person = task.Result; if (!string.IsNullOrEmpty(task.ErrorMessage)) { SetHintText(task.ErrorMessage); Debug.LogError(task.ErrorMessage); } else if (person != null && person.persistedFaceIds != null && person.persistedFaceIds.Length > 0) { string faceId = face.faceId; bool bFaceFound = false; for (int i = 0; i < faces.Length; i++) { if (faces[i].faceId == faceId) { if (faces[i].candidate == null || faces[i].candidate.person == null) { faces[i].candidate = new Candidate(); faces[i].candidate.personId = person.personId; faces[i].candidate.confidence = 1f; faces[i].candidate.person = person; } bFaceFound = true; break; } } if (!bFaceFound) { Debug.Log(string.Format("Face {0} not found.", faceId)); } SetHintText(string.Format("'{0}' created successfully.", userName.Trim())); ShowIdentityResult(); } else { SetHintText("User could not be created."); } } yield return(null); }