public MessageBoxControl() { DataContext = this; InitializeComponent(); _username = user.Username; socket = AppSocket.Instance; GetChatRooms(); currentChannel = "Général"; socket.Emit("joinChannel", user.Username, "Général"); socket.On("newChannel", (data) => { GetChatRooms(); }); socket.On("chat message", (data) => { Console.WriteLine("message!"); Newtonsoft.Json.Linq.JObject obj = (Newtonsoft.Json.Linq.JObject)data; Newtonsoft.Json.Linq.JToken un = obj.GetValue("username"); Newtonsoft.Json.Linq.JToken ts = obj.GetValue("timestamp"); Newtonsoft.Json.Linq.JToken ms = obj.GetValue("message"); Newtonsoft.Json.Linq.JToken channelName = obj.GetValue("channel"); string newMessage = Environment.NewLine + un.ToString() + ts.ToString() + ":\n" + ms.ToString() + Environment.NewLine; updateDictionnary(newMessage.ToString(), channelName.ToString()); Dispatcher.Invoke(() => { if (currentChannel == channelName.ToString()) { messageList.Text += newMessage.ToString(); } }); }); }
void Start() { Screen.fullScreen = false; Screen.orientation = ScreenOrientation.Portrait; AppSocket.SetOnReceiveHandler(OnReceive); if (!AvatarSdkMgr.IsInitialized) { AvatarSdkMgr.Init(); } avatarProvider = AvatarSdkMgr.IoCContainer.Create <IAvatarProvider>(); QualitySettings.antiAliasing = 2; AppSocket.SendCommand(AppSocket.SendType.UNITY_LOADED); if (Application.platform != RuntimePlatform.Android) { QualitySettings.antiAliasing = 8; String marcoBody = "mech_ferrari"; String marcoAvatar = "3907ed35-7071-4ed1-b242-169cb3abc237"; String marcoHair = "male_NewSea_J082m"; String marcoHairColor = "#3E271F"; String paolaBody = "sport_female_m"; String paolaAvatar = "7d910c92-b62c-4084-8f42-749a2cb94eb2"; String paolaHair = "female_NewSea_J096f"; String paolaHairColor = "#202020"; String aliceBody = "medic_female"; String aliceAvatar = "063f8e92-4675-4bee-8f4f-a303779b4e3c"; String aliceHair = "female_NewSea_J123f"; String aliceHairColor = "#3E271F"; if (playerObj != null) { CreateAvatar("b7ce00b9-3589-4dbd-9b5b-2466233e9d89", paolaAvatar, paolaHair, paolaHairColor); } else { CreateAvatar("b7ce00b9-3589-4dbd-9b5b-2466233e9d89", marcoBody, marcoAvatar, marcoHair, marcoHairColor); } } }
private static IEnumerator Speech(GameObject avatar, string fullPath) { AudioSource audioSource = avatar.GetComponent <AudioSource>(); if (fullPath != null && fullPath.Trim().Length > 0) { AudioClip audioClip = null; // Application.temporaryCachePath = /storage/emulated/0/Android/data/it.unitn.robertonegro.facetoface/cache // using (WWW www = new WWW("file://" + Application.temporaryCachePath + "/" + fileName)) using (WWW www = new WWW(fullPath)) { while (!www.isDone) { yield return(null); } if (www.error != null) { Debug.LogError("Error loading file!"); } else { audioClip = www.GetAudioClip(true, false, AudioType.MPEG); } } if (audioClip != null) { audioSource.clip = audioClip; audioSource.Play(); AppSocket.SendCommand(AppSocket.SendType.SPEECH_START, fullPath); yield return(new WaitForSeconds(audioClip.length)); AppSocket.SendCommand(AppSocket.SendType.SPEECH_FINISH, fullPath); } } else { audioSource.Pause(); } yield break; }
private void OnReceive(AppSocket.ReceiveType receiveType, params string[] parameters) { Debug.Log("Received command: " + receiveType.ToString()); switch (receiveType) { case AppSocket.ReceiveType.BG_COLOR: if (parameters.Length != 1 || !SetBackgroundColor(parameters[0])) { AppSocket.SendCommand(AppSocket.SendType.ERROR_PARAMS); } break; case AppSocket.ReceiveType.AVATAR_REMOVE: Destroy(playerObj); playerObj = null; break; case AppSocket.ReceiveType.ANIM_RUN_TRUE: AnimRunning(playerObj, true); break; case AppSocket.ReceiveType.ANIM_RUN_FALSE: AnimRunning(playerObj, false); break; case AppSocket.ReceiveType.ANIM_GREETINGS: AnimGreetings(playerObj); break; case AppSocket.ReceiveType.AVATAR_CREATE: if (parameters.Length != 5) { AppSocket.SendCommand(AppSocket.SendType.ERROR_PARAMS); } else { CreateAvatar(parameters[0], parameters[1], parameters[2], parameters[3], parameters[4]); } break; case AppSocket.ReceiveType.CAMERA_TARGET: if (parameters.Length != 1) { AppSocket.SendCommand(AppSocket.SendType.ERROR_PARAMS); } else { SetCameraTarget(parameters[0]); } break; case AppSocket.ReceiveType.CAMERA_ANGLE: if (parameters.Length != 1) { AppSocket.SendCommand(AppSocket.SendType.ERROR_PARAMS); } else { SetCameraAngle(parameters[0]); } break; case AppSocket.ReceiveType.CAMERA_DISTANCE: if (parameters.Length != 1) { AppSocket.SendCommand(AppSocket.SendType.ERROR_PARAMS); } else { SetCameraDistance(parameters[0]); } break; case AppSocket.ReceiveType.CAMERA_HEIGHT: if (parameters.Length != 1) { AppSocket.SendCommand(AppSocket.SendType.ERROR_PARAMS); } else { SetCameraHeight(parameters[0]); } break; case AppSocket.ReceiveType.SPEECH: if (parameters.Length != 1) { AppSocket.SendCommand(AppSocket.SendType.ERROR_PARAMS); } else { StartCoroutine(Speech(playerObj.transform.Find("Avatar").gameObject, parameters[0])); } break; case AppSocket.ReceiveType.TEST: CreateAvatar("34fab30e-dd0b-4c38-bf43-86360c348db5", "sport_male_m", "c969ecd1-eb27-418c-a26c-1395cb01abbf", "male_makehuman_short02", "#222"); break; default: break; } }
private void FinishAvatar() { GameObject avatar = playerObj.transform.Find("Avatar").gameObject; GameObject head = avatar.transform.Find("HeadObject").gameObject; SkinnedMeshRenderer skinnedMeshRenderer = head.GetComponent <SkinnedMeshRenderer>(); // Add audio source to player for speaking sound AudioSource audioSource = avatar.AddComponent <AudioSource>(); OVRLipSyncContext ovrContext = avatar.AddComponent <OVRLipSyncContext>(); ovrContext.audioSource = audioSource; ovrContext.audioMute = false; OVRLipSyncContextMorphTarget ovrMorphTarget = avatar.AddComponent <OVRLipSyncContextMorphTarget>(); ovrMorphTarget.skinnedMeshRenderer = skinnedMeshRenderer; ovrMorphTarget.VisemeToBlendTargets[0] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("sil"); ovrMorphTarget.VisemeToBlendTargets[1] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("pp"); ovrMorphTarget.VisemeToBlendTargets[2] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("ff"); ovrMorphTarget.VisemeToBlendTargets[3] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("TH"); ovrMorphTarget.VisemeToBlendTargets[4] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("dd"); ovrMorphTarget.VisemeToBlendTargets[5] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("kk"); ovrMorphTarget.VisemeToBlendTargets[6] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("CH"); ovrMorphTarget.VisemeToBlendTargets[7] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("ss"); ovrMorphTarget.VisemeToBlendTargets[8] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("nn"); ovrMorphTarget.VisemeToBlendTargets[9] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("rr"); ovrMorphTarget.VisemeToBlendTargets[10] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("AA"); ovrMorphTarget.VisemeToBlendTargets[11] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("EE"); ovrMorphTarget.VisemeToBlendTargets[12] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("IH"); ovrMorphTarget.VisemeToBlendTargets[13] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("OH"); ovrMorphTarget.VisemeToBlendTargets[14] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("OU"); ovrMorphTarget.KeySendVisemeSignal = new int[15]; ovrMorphTarget.KeySendVisemeSignal[0] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("sil"); ovrMorphTarget.KeySendVisemeSignal[1] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("pp"); ovrMorphTarget.KeySendVisemeSignal[2] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("ff"); ovrMorphTarget.KeySendVisemeSignal[3] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("TH"); ovrMorphTarget.KeySendVisemeSignal[4] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("dd"); ovrMorphTarget.KeySendVisemeSignal[5] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("kk"); ovrMorphTarget.KeySendVisemeSignal[6] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("CH"); ovrMorphTarget.KeySendVisemeSignal[7] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("ss"); ovrMorphTarget.KeySendVisemeSignal[8] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("nn"); ovrMorphTarget.KeySendVisemeSignal[9] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("rr"); ovrMorphTarget.KeySendVisemeSignal[10] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("AA"); ovrMorphTarget.KeySendVisemeSignal[11] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("EE"); ovrMorphTarget.KeySendVisemeSignal[12] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("IH"); ovrMorphTarget.KeySendVisemeSignal[13] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("OH"); ovrMorphTarget.KeySendVisemeSignal[14] = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("OU"); ovrMorphTarget.SmoothAmount = 10; ovrContext.enabled = false; ovrContext.enabled = true; EyeController eyeController = avatar.AddComponent <EyeController>(); eyeController.head = avatar.transform.Find("HeadObject").gameObject; eyeController.positiveXAxis = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("EyesRight"); eyeController.positiveYAxis = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("EyesUp"); eyeController.negativeXAxis = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("EyesLeft"); eyeController.negativeYAxis = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("EyesDown"); eyeController.blinkL = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("EyeBlink_L"); eyeController.blinkR = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("EyeBlink_R"); // Set camera if (cameraObj != null) { eyeController.target = cameraObj.transform; cameraObj.GetComponent <CameraScript>().target = playerObj.transform; } // send finish command AppSocket.SendCommand(AppSocket.SendType.AVATAR_FINISH); }
private void CreateAvatar(string playerId, string avatarCode, string haircutIdentity = null, string hairColor = "#222") { AppSocket.SendCommand(AppSocket.SendType.AVATAR_LOADING); StartCoroutine(Initialize(playerId, avatarCode, haircutIdentity, hairColor)); }
private void OnGUI() { GUILayout.BeginHorizontal(); GUILayout.Label("ID"); ID = uint.Parse(GUILayout.TextField(ID.ToString())); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("server ip"); byte[] bip = serverAddress.GetAddressBytes(); for (int i = 0; i < bip.Length; i++) { bip[i] = System.Convert.ToByte(GUILayout.TextField(bip[i].ToString())); } serverAddress = new IPAddress(bip); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("server port"); serverPort = int.Parse(GUILayout.TextField(serverPort.ToString())); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("client port"); clientPort = int.Parse(GUILayout.TextField(clientPort.ToString())); GUILayout.EndHorizontal(); GUI.enabled = socket == null || socket.netState == NetState.None; if (GUILayout.Button("Connect", GUILayout.Width(200), GUILayout.Width(80))) { LSState = LockStepState.None; LSTick = 0; LSFrame = 0; LSFrameAchieve = true; LSAccFrame = 0; SLSBuffer = new PlayersInputBuffer(); socket = new AppSocket(ID); socket.packetHandler[PacketType.Message] = ReceivePacketHandler; socket.packetHandler[PacketType.LockStep] = ReceivePacketHandler; socket.Connect(serverAddress, serverPort, clientPort); } GUI.enabled = true; GUI.color = socket != null && socket.netState == NetState.Connected ? Color.green : Color.white; GUILayout.Label("状态: " + (socket != null ? socket.netState : NetState.None)); GUI.color = Color.white; GUILayout.Label("延迟: " + (socket != null ? ((int)(socket.latency * 1000)).ToString() : "")); GUILayout.Label("速度: " + gameSpeed); if (socket != null) { // 已发送包 Packet[] sends = socket.sends.ToArray(); for (int i = 0; i < sends.Length; i++) { GUI.color = sends[i].arrived ? Color.green : Color.white; GUILayout.Label(sends[i].sequence + " " + sends[i].type); GUI.color = Color.white; } // 已接收包 GUILayout.BeginArea(new Rect(300, 20, 200, 600)); Packet[] receives = socket.receives.ToArray(); for (int i = 0; i < receives.Length; i++) { GUILayout.Label(receives[i].sequence + " " + receives[i].type); } GUILayout.EndArea(); } }