Ejemplo n.º 1
0
            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();
            }
Ejemplo n.º 2
0
            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);
            }
Ejemplo n.º 3
0
            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();
            }
Ejemplo n.º 4
0
        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);
                }
            };
        }