コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }