public async Task SaveObjF(SaveObj so, WebSocket webSocket, Random rm) { if (this.addModel) { var index = rm.Next(0, roomUrls.Count); var roomUrl = roomUrls[index]; var sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(new SaveObjInfo() { c = "SaveObjInfo", amodel = material[this.indexOfSelect].modelName, modelID = this.ID, rotatey = so.rotationY, x = so.x, y = so.y, z = so.z }); await Startup.sendInmationToUrlAndGetRes(roomUrl, sendMsg); } else { var index = rm.Next(0, roomUrls.Count); var roomUrl = roomUrls[index]; var sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(new UpdateObjInfo() { c = "UpdateObjInfo", modelID = this.ID, rotatey = so.rotationY, x = so.x, y = so.y, z = so.z }); await Startup.sendInmationToUrlAndGetRes(roomUrl, sendMsg); ShowOBJFile sf = new ShowOBJFile() { c = "ShowOBJFile", x = so.x, z = so.z }; await this.ShowObj(sf, webSocket, rm); } //var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonClass.MapEditor.Position>(json); //return obj; // throw new NotImplementedException(); }
internal async Task DeleteModel(WebSocket webSocket, DeleteModel dm, Random rm) { var index = rm.Next(0, roomUrls.Count); var roomUrl = roomUrls[index]; var sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(new DelObjInfo() { c = "DelObjInfo", modelID = this.ID, }); await Startup.sendInmationToUrlAndGetRes(roomUrl, sendMsg); ShowOBJFile sf = new ShowOBJFile() { c = "ShowOBJFile", x = dm.x, z = dm.z, }; await this.ShowObj(sf, webSocket, rm); }
public async Task ShowObj(ShowOBJFile sf, WebSocket webSocket, Random rm) { var index = rm.Next(0, roomUrls.Count); var roomUrl = roomUrls[index]; var sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(sf); var json = await Startup.sendInmationToUrlAndGetRes(roomUrl, sendMsg); var obj = Newtonsoft.Json.JsonConvert.DeserializeObject <CommonClass.MapEditor.ObjResult>(json); for (int i = 0; i < obj.detail.Count; i++) { var objInfomation = this.material.Find(item => item.modelName == obj.detail[i].amodel); await objInfomation.initialize(rm); await this.DrawModel(objInfomation, obj.detail[i], webSocket); } // return obj; // throw new NotImplementedException(); }
private static async Task Echo(System.Net.WebSockets.WebSocket webSocket) { WebSocketReceiveResult wResult; { var returnResult = await ReceiveStringAsync(webSocket, webWsSize); wResult = returnResult.wr; Console.WriteLine($"receive from web:{returnResult.result}"); var hash = CommonClass.Random.GetMD5HashFromStr(DateTime.Now.ToString("yyyyMMddHHmmss") + "yrq"); { /* * 前台的汽车模型 */ var msg = Newtonsoft.Json.JsonConvert.SerializeObject(new { c = "SetHash", hash = hash }); var sendData = Encoding.ASCII.GetBytes(msg); await webSocket.SendAsync(new ArraySegment <byte>(sendData, 0, sendData.Length), WebSocketMessageType.Text, true, CancellationToken.None); } returnResult = await ReceiveStringAsync(webSocket, webWsSize); wResult = returnResult.wr; Console.WriteLine($"receive from web:{returnResult.result}"); List <string> allowedAddress = new List <string>() { "1NyrqneGRxTpCohjJdwKruM88JyARB2Ljr", "1NyrqNVai7uCP4CwZoDfQVAJ6EbdgaG6bg" }; bool signIsRight = false; //if (CommonClass.Format.IsBase64(returnResult.result)) //{ // for (var i = 0; i < allowedAddress.Count; i++) // { // var address = allowedAddress[i]; // signIsRight = BitCoin.Sign.checkSign(returnResult.result, hash, address); // if (signIsRight) // { // break; // } // } //} signIsRight = true; if (signIsRight) { Random rm = new Random(DateTime.Now.GetHashCode()); ModeManger mm = new ModeManger(); await mm.GetCatege(rm); Dictionary <string, bool> roads = new Dictionary <string, bool>(); //stateOfSelection ss = stateOfSelection.roadCross; //string roadCode; //int roadOrder; //string anotherRoadCode; //int anotherRoadOrder; var firstRoad = await getFirstRoad(rm); //roadCode = firstRoad.roadCode; //roadOrder = firstRoad.roadOrder; //anotherRoadCode = firstRoad.anotherRoadCode; //anotherRoadOrder = firstRoad.anotherRoadOrder; await SetView(firstRoad, webSocket); roads = await Draw(firstRoad, roads, webSocket, rm); stateOfSelection ss = stateOfSelection.roadCross; do { try { returnResult = await ReceiveStringAsync(webSocket, webWsSize); wResult = returnResult.wr; Console.WriteLine($"receive from web:{returnResult.result}"); //CommonClass.Command var c = Newtonsoft.Json.JsonConvert.DeserializeObject <CommonClass.Command>(returnResult.result); if (c.c == "change") { // if(ss==stateOfSelection) if (ss == stateOfSelection.roadCross) { ss = stateOfSelection.modelEdit; } else { ss = stateOfSelection.roadCross; } await SetState(ss, webSocket); continue; } else if (c.c == "ShowOBJFile") { ShowOBJFile sf = Newtonsoft.Json.JsonConvert.DeserializeObject <CommonClass.MapEditor.ShowOBJFile>(returnResult.result); await mm.ShowObj(sf, webSocket, rm); continue; } switch (ss) { case stateOfSelection.roadCross: { // var c = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonClass.Command>(returnResult.result); switch (c.c) { case "nextCross": { firstRoad = await getNextCross(firstRoad, rm); }; break; case "previousCross": { firstRoad = await getPreviousCross(firstRoad, rm); }; break; case "changeRoad": { var secondRoad = new Position() { anotherRoadCode = firstRoad.roadCode, anotherRoadOrder = firstRoad.roadOrder, roadCode = firstRoad.anotherRoadCode, roadOrder = firstRoad.anotherRoadOrder, c = "Position", latitude = firstRoad.latitude, longitude = firstRoad.longitude }; firstRoad = secondRoad; }; break; //case "addModel": // { // var secondRoad = new Position() // { // anotherRoadCode = firstRoad.roadCode, // anotherRoadOrder = firstRoad.roadOrder, // roadCode = firstRoad.anotherRoadCode, // roadOrder = firstRoad.anotherRoadOrder, // c = "Position", // latitude = firstRoad.latitude, // longitude = firstRoad.longitude // }; // firstRoad = secondRoad; // }; break; } await SetView(firstRoad, webSocket); roads = await Draw(firstRoad, roads, webSocket, rm); }; break; case stateOfSelection.modelEdit: { switch (c.c) { case "AddModel": { mm.addModel = true; var m = await mm.GetModel(rm); await mm.AddModel(m, webSocket); }; break; case "PreviousModel": { mm.PreviousModel(); if (mm.addModel) { var m = await mm.GetModel(rm); await mm.AddModel(m, webSocket); } }; break; case "NextModel": { mm.NextModel(); if (mm.addModel) { var m = await mm.GetModel(rm); await mm.AddModel(m, webSocket); } }; break; case "PreviousCategory": { mm.PreviousCategory(); if (mm.addModel) { var m = await mm.GetModel(rm); await mm.AddModel(m, webSocket); } }; break; case "NextCategory": { mm.NextCategory(); if (mm.addModel) { var m = await mm.GetModel(rm); await mm.AddModel(m, webSocket); } }; break; case "SaveObj": { SaveObj so = Newtonsoft.Json.JsonConvert.DeserializeObject <SaveObj>(returnResult.result); await mm.SaveObjF(so, webSocket, rm); }; break; case "EditModel": { mm.addModel = false; EditModel em = Newtonsoft.Json.JsonConvert.DeserializeObject <EditModel>(returnResult.result); mm.ID = em.name; await mm.EditModel(webSocket); }; break; case "DeleteModel": { mm.addModel = false; DeleteModel dm = Newtonsoft.Json.JsonConvert.DeserializeObject <DeleteModel>(returnResult.result); mm.ID = dm.name; await mm.DeleteModel(webSocket, dm, rm); }; break; } }; break; } } catch (Exception e) { Console.WriteLine($"{ Newtonsoft.Json.JsonConvert.SerializeObject(e)}"); //await Room.setOffLine(s); //removeWs(s.WebsocketID); // Console.WriteLine($"step2:webSockets数量:{ BufferImage.webSockets.Count}"); // return; throw e; } }while (!wResult.CloseStatus.HasValue); } }; }