private void CreateModel(string id, NodeType type, double x, double y, IdentifyObject identify) { var model = new CubeVisual3D { Center = new Point3D(x, y, 0), SideLength = 5 }; if (type == NodeType.Substation) { model.Material = Materials.Blue; } if (type == NodeType.Switch) { model.Material = Materials.Yellow; } if (type == NodeType.Node) { model.Material = Materials.Red; } allNodes.Add(id, model); models.Add(model.Model); elements.Add(model.Model, identify); }
/// <summary> /// Attempt to send an Identify request to the server WebSocket. If previously identified, a Resume request will be sent instead. /// </summary> public async Task <ReadyResponse> Identify(string token, int shardId, int shardCount) { ReadyResponse ready = new ReadyResponse(); // Cache the token: if (!string.IsNullOrEmpty(token)) { Cache.Token = new TokenResponse(); Cache.Token.AccessToken = token; } if (Client.State == WebSocketState.Open) { IdentifyObject identify = new IdentifyObject(); identify.OpCode = 2; identify.EventData = new Identify(); identify.EventData.Compress = false; identify.EventData.LargeThreshold = 50; identify.EventData.Token = Cache.Token.AccessToken; identify.EventData.Shards = new int[] { shardId, shardCount }; identify.EventData.Properties = new IdentifyConnection(); identify.EventData.Properties.OperatingSystem = "Windows"; identify.EventData.Properties.Browser = "Library"; identify.EventData.Properties.Device = "Library"; string payload = serializer.Serialize(identify); await SendAsync(payload); // Cleanup cancelled listener: if (EventListener != null && (EventListener.IsCanceled || EventListener.IsFaulted)) { EventListener.Dispose(); listening = false; } // Listen on a new thread: if (!listening) { ready = await listener.ReceiveAsync <ReadyResponse>(); if (ready != null) { Cache.ReadyResponse = ready; } EventListener = new Task(async() => await listener.Listen()); EventListener.Start(); listening = true; /*Task t = new Task(async () => await listener.Listen()); * listening = true; * * t.Start();*/ } return(ready); } // Identification failed, return null. return(null); }