Beispiel #1
0
        protected override void OnUpdate()
        {
            base.OnUpdate();

            foreach (var(_, feature) in Features)
            {
                feature.Driver.Update();

                while (feature.Driver.Accept().IsCreated)
                {
                }

                TransportEvent ev;
                while ((ev = feature.Driver.PopEvent()).Type != TransportEvent.EType.None)
                {
                    switch (ev.Type)
                    {
                    case TransportEvent.EType.None:
                        break;

                    case TransportEvent.EType.RequestConnection:
                        break;

                    case TransportEvent.EType.Connect:
                        break;

                    case TransportEvent.EType.Disconnect:
                        break;

                    case TransportEvent.EType.Data:
                        var reader = new DataBufferReader(ev.Data);
                        var type   = (EAudioSendType)reader.ReadValue <int>();
                        switch (type)
                        {
                        case EAudioSendType.Unknown:
                            break;

                        case EAudioSendType.RegisterResource:
                            OnReceiveResource(ev.Connection, ref reader);
                            break;

                        case EAudioSendType.RegisterPlayer:
                            OnReceivePlayer(ev.Connection, ref reader);
                            break;

                        case EAudioSendType.SendAudioPlayerData:
                            var player    = reader.ReadBuffer <CharBuffer128>();
                            var @delegate = playerManager.GetDelegate(player);
                            @delegate?.Invoke(ev.Connection, ref reader);
                            break;

                        default:
                            throw new ArgumentOutOfRangeException($"EAudioSendType: " + type);
                        }

                        break;

                    default:
                        throw new ArgumentOutOfRangeException($"MessageType" + ev.Type);
                    }
                }
            }
        }