Пример #1
0
        protected override void Read(DataStreamReader stream)
        {
            var readerLength = Readers.Count;

            for (int i = 0; i < readerLength; i++)
            {
                INetworkReader reader  = Readers[i];
                var            context = default(DataStreamReader.Context);
                var            header  = reader.Match(stream, ref context);

                if (!header.Matched)
                {
                    continue;
                }

                reader.Read(stream, ref context);

                // Need to come up with a nicer way
                if (reader is SpawnRPC spawnRpc)
                {
                    var spawner   = FindObjectOfType <SpawnSystem>();
                    var spawnData = spawnRpc.Data;
                    var position  = spawnData.Position;
                    var rotation  = spawnData.Rotation;

                    spawner.SpawnInClient(spawnData.PrefabId, spawnData.InstanceId, (int)spawnData.Ownership, position, rotation, this);
                }
            }
        }
        private void ThreadProc()
        {
            while (!exit)
            {
                try
                {
                    var args = new IncommingMessageEventArgs <E>
                    {
                        Message = reader.Read(),
                        Sender  = reader.Sender
                    };
                    IncomingMessage?.Invoke(this, args);
                }
                catch (System.Net.Sockets.SocketException e)
                {
                }
                catch (Exception e)
                {
                    string            message = e.Message;
                    string            caption = "Error Detected in Input";
                    MessageBoxButtons buttons = MessageBoxButtons.OK;

                    var result = MessageBox.Show(message, caption, buttons);
                }
            }
        }
        protected override void Read(int connectionId, DataStreamReader stream, ref DataStreamReader.Context context)
        {
            var readerLength = Readers.Count;

            for (int i = 0; i < readerLength; i++)
            {
                INetworkReader reader        = Readers[i];
                var            readerContext = default(DataStreamReader.Context);
                var            header        = reader.Match(stream, ref readerContext);

                if (!header.Matched)
                {
                    continue;
                }

                reader.Read(stream, ref readerContext);

                // TODO This should be refactored to not have to check
                if (reader is SpawnRequestRPC spawnRpc)
                {
                    var spawner   = FindObjectOfType <SpawnSystem>();
                    var spawnData = spawnRpc.Data;

                    // Passing the connection id will make it owned by the connection.
                    spawner.SpawnInServer(spawnData.PrefabId, spawnData.Position, spawnData.Rotation, null);
                }

                SuccessfullyRead(reader, connectionId);
            }
        }