void Update() { try { if (listRecvStr.Count != 0) { //oldListRecStr = listRecvStr; //recOrNot = false; foreach (string recvFinal in listRecvStr) { //print(recvFinal + count_plantSet.ToString()); JSONNode jData = JSON.Parse(recvFinal); //print(jData); string header = jData["header"]; if (header == "ps") { PlantSet ps = JsonUtility.FromJson <PlantSet>(recvFinal); //PlantSet ps = JsonConvert.DeserializeObject<PlantSet>(recvFinal); GameObject plantSetWant = GameObject.Find(ps.Name); mpUI.GeneratePlantAnchor(ps.Name, ps.pos, ps.rotate, true); } else if (header == "pds") { GameObject singlePlant = FindSinglePlant(jData["singName"], jData["singId"]); UpdateSingPlant(singlePlant, jData, true); } else if (header == "pds_sync") { GameObject singlePlant = FindSinglePlant(jData["singName"], jData["singId"]); UpdateSingPlant(singlePlant, jData, false); } else if (header == "PN") { plantSetNum = int.Parse(jData["PlantNumber"]); } else if (header == "wa") { WorldAnchorTrans wat = JsonUtility.FromJson <WorldAnchorTrans>(recvFinal); anchorData = wat.data; Debug.Log("download anchor with tcp successfully"); } } listRecvStr = new List <string>(); } } catch (Exception e) { print("Error happens here:" + e); } }
public void SendWorlAnchor(WorldAnchorTrans w) { byte[] sendData = new byte[81920]; string senDataJson = JsonUtility.ToJson(w) + "<EOF>"; //string senDataJson = JsonConvert.SerializeObject(w) + "<EOF>"; //sendData = ObjectToByteArray(w); //string senDataJson = "{'header':'wa', 'spaceName':" + id + ", 'data':" + w.ToString() + "}" + "<EOF>" ; sendData = Encoding.UTF8.GetBytes(senDataJson); int totalByteToSend = sendData.Length; int byteSend = 0; Debug.Log("the total byte is:" + sendData.Length); while (byteSend < totalByteToSend) { byteSend += serverSocket.Send(sendData, byteSend, totalByteToSend - byteSend, SocketFlags.None); } //serverSocket.SendTo(sendData, sendData.Length, SocketFlags.None, ipEnd); }
public void PressAndGenerate() { if (Choice == Selection.CreateNew) { //TextAsset asset = Resources.Load("data_demonstration") as TextAsset; //anchorData = asset.bytes; //WorldAnchorTrans wat = new WorldAnchorTrans //{ // header = "wa", // spaceName = spaceId, // data = anchorData //}; //tCP.SendWorlAnchor(wat); TimeCost tc4 = new TimeCost("OFALL", Time.time.ToString() + "start generating the anchor"); tCP.SocketSendByte(tc4); //GameObject parentanchor = GameObject.Find("anchor1"); WorldAnchor wa1 = anchorObject1.AddComponent <WorldAnchor>(); WorldAnchorTransferBatch watb = new WorldAnchorTransferBatch(); watb.AddWorldAnchor(anchorObject1.name, wa1); WorldAnchor wa2 = anchorObject2.AddComponent <WorldAnchor>(); watb.AddWorldAnchor(anchorObject2.name, wa2); TimeCost tc5 = new TimeCost("OFALL", Time.time.ToString() + "Generating anchor done"); tCP.SocketSendByte(tc5); imgSet.SetActive(true); //tCP.InitSocket(); exportedData = new byte[0]; e = new List <byte>(); indicator.GetComponent <MeshRenderer>().material.color = Color.yellow; syncOrNot = true; TimeCost tc6 = new TimeCost("OFALL", Time.time.ToString() + "start serializing the anchor"); tCP.SocketSendByte(tc6); WorldAnchorTransferBatch.ExportAsync(watb, (data) => { e.AddRange(data); exportedData = data; }, (reason) => { if (reason == SerializationCompletionReason.Succeeded) { WorldAnchorTrans wat = new WorldAnchorTrans { header = "wa", spaceName = spaceId, data = e.ToArray() }; TimeCost tc7 = new TimeCost("OFALL", Time.time.ToString() + "start sending anchor data"); tCP.SocketSendByte(tc7); tCP.SendWorlAnchor(wat); //CreateNewAnchorInManager(); indicator.GetComponent <MeshRenderer>().material.color = Color.green; syncOrNot = true; } else { Debug.Log("failed to upload world anchor, please try agagin"); indicator.GetComponent <MeshRenderer>().material.color = Color.red; } }); } else if (Choice == Selection.SycnDirectly) { //tCP.InitSocket(); StartCoroutine(DownloadAnchor(spaceId)); } else if (Choice == Selection.LocationSync) { SendMsg msgNeed = new SendMsg("NeedToSyncPlantSet"); tCP.SocketSendByte(msgNeed); } else if (Choice == Selection.CreateNew_multi) { WorldAnchor wa1 = anchorObject1.AddComponent <WorldAnchor>(); WorldAnchorTransferBatch watb = new WorldAnchorTransferBatch(); watb.AddWorldAnchor(anchorObject1.name, wa1); WorldAnchor wa2 = anchorObject2.AddComponent <WorldAnchor>(); watb.AddWorldAnchor(anchorObject2.name, wa2); WorldAnchor wa3 = anchorObject3.AddComponent <WorldAnchor>(); WorldAnchor wa4 = anchorObject4.AddComponent <WorldAnchor>(); WorldAnchor wa5 = anchorObject5.AddComponent <WorldAnchor>(); WorldAnchor wa2_1 = anchorObject2_1.AddComponent <WorldAnchor>(); WorldAnchor wa3_1 = anchorObject3_1.AddComponent <WorldAnchor>(); imgSet.SetActive(true); } else if (Choice == Selection.Version1) { anchorObject1.SetActive(true); anchorObject2_1.SetActive(true); anchorObject3_1.SetActive(true); } else if (Choice == Selection.Version2) { anchorObject1.SetActive(true); anchorObject2.SetActive(true); anchorObject3.SetActive(true); anchorObject4.SetActive(true); anchorObject5.SetActive(true); } }