public IEnumerator OnNewGuest(VOGControllerAuth ctrl, AvatarGender gender) { try { ctrl.DisableInput(); //Create guest ApiCall call = VostopiaClient.Authentication.BeginSignInGuest(gender); IEnumerator e = call.Wait(); while (e.MoveNext()) { yield return e.Current; } if (!VostopiaClient.Authentication.EndSignIn(call)) { ctrl.ShowMessageDialog("Uh-oh", "There was an error creating a guest account for you. Please try again.", () => { }); yield break; } //Store authentication key if (call.ResponseData["authKey"] != null) { string authKey = (string)call.ResponseData["authKey"]; ctrl.StoreGuestAuthenticationKey(authKey); } //Continue to auth completed screen ctrl.AuthenticationCompleted(); } finally { ctrl.EnableInput(); } }
/** * Called on the same frame the avatar is loaded. Use this to modify the avatar after * it's loaded, e.g. set the Mecanim Avatar, scale mesh, etc. */ public void OnAvatarGenderUpdated(AvatarGender gender) { var avatar = gender == AvatarGender.Male ? MaleAvatar : FemaleAvatar; CachedAnimator.avatar = avatar; var femaleLayer = GetGenderLayer(AvatarGender.Female); if (femaleLayer != 0) { var femaleLayerWeight = gender == AvatarGender.Female ? 1f : 0f; CachedAnimator.SetLayerWeight(femaleLayer, femaleLayerWeight); } }
public IEnumerator OnNewUser(VOGControllerAuth ctrl, AvatarGender gender) { try { ctrl.DisableInput(); //Create user ApiCall call = VostopiaClient.Authentication.BeginRegister(Email, KeepInTouch, gender); IEnumerator e = call.Wait(); while (e.MoveNext()) { yield return e.Current; } var registerResult = VostopiaClient.Authentication.EndRegister(call); if (registerResult != VostopiaAuthenticationClient.RegisterResult.SUCCESS) { Debug.LogWarning("Error creating new user, " + registerResult); string msg = ""; if (registerResult == VostopiaAuthenticationClient.RegisterResult.USER_ALREADY_EXISTS) { msg = "That email address is already in use! Please try another."; } else if (registerResult == VostopiaAuthenticationClient.RegisterResult.INVALID_EMAIL) { msg = "That email address doesn't make sense to us =( Please try again."; } else { msg = "Something went wrong while creating your account =( Please try again."; } //Show message box and return to previous screen ctrl.ShowMessageDialog("Uh-oh", msg, () => { ctrl.StartBackTransition(); }); yield break; } //Store authentication key if (call.ResponseData["authKey"] != null) { string authKey = (string)call.ResponseData["authKey"]; ctrl.StoreGuestAuthenticationKey(authKey); } //Continue to auth completed screen ctrl.AuthenticationCompleted(); } finally { ctrl.EnableInput(); } }
private int GetGenderLayer(AvatarGender gender) { if (gender == AvatarGender.Female) { for (int i = 0; i < CachedAnimator.layerCount; i++) { if (CachedAnimator.GetLayerName(i).ToLower() == "female") { return i; } } } return 0; }
private string GetSSMLGender(AvatarGender gender) { if (gender == AvatarGender.Male) { return(SSMLGender.Male); } if (gender == AvatarGender.Female) { return(SSMLGender.Female); } if (gender == AvatarGender.Neutral) { return(SSMLGender.Neutral); } return(SSMLGender.Unspecified); }
public void SetAvatarInfo(string chosen) { avatarModel = chosen; if (chosen.StartsWith("Boy")) { avatarGender = AvatarGender.Male; if (chosen.EndsWith("A")) { avatarSkinTone = AvatarSkinTone.Asian; } if (chosen.EndsWith("B")) { avatarSkinTone = AvatarSkinTone.Black; } else { avatarSkinTone = AvatarSkinTone.White; } } else if (chosen.StartsWith("Girl")) { avatarGender = AvatarGender.Female; if (chosen.EndsWith("A")) { avatarSkinTone = AvatarSkinTone.Asian; } else if (chosen.EndsWith("B")) { avatarSkinTone = AvatarSkinTone.Black; } else { avatarSkinTone = AvatarSkinTone.White; } } else { avatarGender = AvatarGender.Neutral; avatarSkinTone = AvatarSkinTone.Asian; // sort of middle } }
public void LoadAnims(AvatarGender gender) { currentGender = gender; //crossfade to new basic idle currentIdles = new List<AnimationMixingSettings>(GenericIdles); if (gender == AvatarGender.Male) { currentBasicIdle = BasicIdleMale; currentIdles.AddRange(MaleIdles); } else { currentBasicIdle = BasicIdleFemale; currentIdles.AddRange(FemaleIdles); } animCtrl.CrossFade(currentBasicIdle.name); }
public IEnumerator DetectIntent(AudioClip audio, AvatarGender gender, Action <AudioClip> callback) { string url = $"https://dialogflow.googleapis.com/v2/projects/{projectId}/agent/sessions/{sessionId}:detectIntent"; string inputAudio = Convert.ToBase64String(Audio.FromAudioClip(audio)); if (inputAudio == null) { callback(null); yield break; } UnityWebRequest request = new UnityWebRequest(url, "POST"); RequestBody requestBody = GetRequestBody(inputAudio, GetSSMLGender(gender)); string jsonBody = Json.ToJson(requestBody); byte[] rawBody = Encoding.UTF8.GetBytes(jsonBody); string accessToken = ""; yield return(DialogFlowAuth.GetToken((string token) => accessToken = token)); request.SetRequestHeader("Authorization", "Bearer " + accessToken); request.uploadHandler = (UploadHandler) new UploadHandlerRaw(rawBody); request.downloadHandler = (DownloadHandler) new DownloadHandlerBuffer(); yield return(request.SendWebRequest()); if (request.isNetworkError || request.isHttpError) { Debug.LogWarning(request.error); callback(null); yield break; } byte[] rawResponse = request.downloadHandler.data; ResponseBody response = GetResponseBody(rawResponse); AudioClip outputAudio = response.outputAudio != null ? Audio.ToAudioClip(Convert.FromBase64String(response.outputAudio)) : Audio.EmptyClip(); callback(outputAudio); }