Пример #1
0
 public override int GetHashCode()
 {
     unchecked
     {
         int result = SlotId;
         result = (result * 397) ^ (Name != null ? Name.GetHashCode() : 0);
         result = (result * 397) ^ ClockRate.GetHashCode();
         result = (result * 397) ^ ChannelCount.GetHashCode();
         result = (result * 397) ^ SamplesPerFrame.GetHashCode();
         result = (result * 397) ^ BitsPerSample.GetHashCode();
         return(result);
     }
 }
Пример #2
0
        public int CompareTo(WicPixelFormat other)
        {
            if (other == null)
            {
                throw new ArgumentNullException(nameof(other));
            }

            if (BitsPerPixel != other.BitsPerPixel)
            {
                return(BitsPerPixel.CompareTo(other.BitsPerPixel));
            }

            return(ChannelCount.CompareTo(other.ChannelCount));
        }
Пример #3
0
        static int GetChannelCount(ChannelCount channelCount)
        {
            switch (channelCount)
            {
            case ChannelCount.One: return(1);

            case ChannelCount.Two: return(2);

            case ChannelCount.Three: return(3);

            case ChannelCount.Six: return(6);

            default: throw new InvalidOperationException("Invalid channel count");
            }
        }
Пример #4
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (Width != 0)
            {
                hash ^= Width.GetHashCode();
            }
            if (Height != 0)
            {
                hash ^= Height.GetHashCode();
            }
            if (ChannelCount != 0)
            {
                hash ^= ChannelCount.GetHashCode();
            }
            if (Raw.Length != 0)
            {
                hash ^= Raw.GetHashCode();
            }
            hash ^= rois_.GetHashCode();
            if (SolutionId != 0)
            {
                hash ^= SolutionId.GetHashCode();
            }
            if (ErrorId != 0)
            {
                hash ^= ErrorId.GetHashCode();
            }
            if (Key.Length != 0)
            {
                hash ^= Key.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
Пример #5
0
        public ChannelCount IsFormatSupported(long rate, int encoding)
        {
            ChannelCount channels = NativeMethods.NativeMpg123FormatSupport(this.handle, (IntPtr)rate, encoding);

            return(channels);
        }
Пример #6
0
        internal override void Receive(Identity id, byte[] packet, int size, int channel)
        {
            base.Receive(id, packet, size, channel);
            EPacket parsedPacket = (EPacket)packet[0];

            StripPacketByte(ref packet, ref size);

            if (parsedPacket.IsUpdate())
            {
                foreach (Channel ch in Receivers.Where(ch => ch.ID == channel))
                {
                    ch.Receive(id, packet, 0, size);
                }
                return;
            }

            if (id != ServerID)
            {
                return;
            }
            switch (parsedPacket)
            {
            case EPacket.WORKSHOP:
                //todo
                break;

            case EPacket.TICK:
            {
                var data = ObjectSerializer.GetBytes(0, Time.realtimeSinceStartup);
                Send(ServerID, EPacket.TIME, data, 0);
                break;
            }

            case EPacket.TIME:
            {
                object[] args = ObjectSerializer.GetObjects(0, 0, packet, typeof(float));
                LastNet   = Time.realtimeSinceStartup;
                OffsetNet = ((float)args[0]) + ((Time.realtimeSinceStartup - LastPing) / 2f);
                Lag(Time.realtimeSinceStartup - LastPing);
                break;
            }

            case EPacket.SHUTDOWN:
                Disconnect();
                break;

            case EPacket.CONNECTED:
            {
                {
                    Type[] argTypes =
                    {
                        //[0] id, [1] name, [2] group, [3] position, [4], angle, [5] channel
                        typeof(Identity), typeof(string), typeof(ulong), typeof(Vector3), typeof(Vector3),
                        typeof(int),      typeof(bool)
                    };

                    object[] args = ObjectSerializer.GetObjects(0, 0, packet, argTypes);
                    if (IsSinglePlayer)
                    {
                        return;
                    }
                    if (World.Loaded)
                    {
                        AddPlayer(Provider.Deserialilze((Identity)args[0]), (string)args[1], (ulong)args[2],
                                  (Vector3)args[3], (Vector3)args[4], (int)args[5], (bool)args[6]);
                    }
                    else
                    {
                        QueuePlayer(Provider.Deserialilze((Identity)args[0]), (string)args[1], (ulong)args[2],
                                    (Vector3)args[3], (Vector3)args[4], (int)args[5], (bool)args[6]);
                    }
                    break;
                }
            }

            case EPacket.VERIFY:
                LogUtils.Debug("Opening ticket");
                byte[] ticket = ((ClientMultiplayerProvider)Provider).OpenTicket();
                if (ticket == null)
                {
                    LogUtils.Debug("ticket equals null");
                    Disconnect();
                    break;
                }
                Send(ServerID, EPacket.AUTHENTICATE, ticket, ticket.Length, 0);
                break;

            case EPacket.DISCONNECTED:
            {
                //If singleplayer (local server) we will already do this at ServerConnection
                if (IsSinglePlayer)
                {
                    return;
                }
                object[] args  = ObjectSerializer.GetObjects(0, 0, packet, typeof(byte));
                var      index = (byte)args[0];

                var user = GetUser(index);

                PlayerQuitEvent @event = new PlayerQuitEvent(user.Player);
                EventManager.Instance.CallEvent(@event);

                RemovePlayer(index);
                break;
            }

            case EPacket.REJECTED:
            case EPacket.KICKED:
                Disconnect();
                break;

            case EPacket.ACCEPTED:
            {
                object[] args = ObjectSerializer.GetObjects(0, 0, packet, typeof(ulong), typeof(int));
                LogUtils.Debug("Setting MainPlayer channel to: " + (int)args[1]);
                ((ClientMultiplayerProvider)Provider).SetIdentity((ulong)args[0]);
                ((ClientMultiplayerProvider)Provider).AdvertiseGame(ServerID, _currentIp, _currentPort);
                ((ClientMultiplayerProvider)Provider).SetConnectInfo(_currentIp, _currentPort);
                IsFavoritedServer = ((ClientMultiplayerProvider)Provider).IsFavoritedServer(_currentIp, _currentPort);
                ((ClientMultiplayerProvider)Provider).FavoriteServer(_currentIp, _currentPort);
                break;
            }

            case EPacket.UPDATE_CHANNELS:
            {
                object[] args = ObjectSerializer.GetObjects(0, 0, packet, ChannelCount.GetType());
                ChannelCount = (int)args[0];
                break;
            }

            default:
                LogUtils.LogWarning("Couldn't handle packet: " + parsedPacket);
                break;
            }
        }