Ejemplo n.º 1
0
        public void WriteByteArray(byte[] from, int offset, int count)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Writing byte array ({0} bits)", count * 8);
            }
#endif
            int p        = Ptr >> 3;
            int bitsUsed = Ptr % 8;
            int bitsFree = 8 - bitsUsed;

            if (bitsUsed == 0)
            {
                Buffer.BlockCopy(from, offset, Data, p, count);
            }
            else
            {
                for (int i = 0; i < count; ++i)
                {
                    byte value = from[offset + i];

                    Data[p] &= (byte)(0xFF >> bitsFree);
                    Data[p] |= (byte)(value << bitsUsed);

                    p += 1;

                    Data[p] &= (byte)(0xFF << bitsUsed);
                    Data[p] |= (byte)(value >> bitsFree);
                }
            }

            Ptr += (count * 8);
        }
Ejemplo n.º 2
0
        public void ReadByteArray(byte[] to, int offset, int count)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Reading byte array ({0} bits)", count * 8);
            }
#endif

            int p        = Ptr >> 3;
            int bitsUsed = Ptr % 8;

            if (bitsUsed == 0)
            {
                Buffer.BlockCopy(Data, p, to, offset, count);
            }
            else
            {
                int bitsNotUsed = 8 - bitsUsed;

                for (int i = 0; i < count; ++i)
                {
                    int first = Data[p] >> bitsUsed;

                    p += 1;

                    int second = Data[p] & (255 >> bitsNotUsed);
                    to[offset + i] = (byte)(first | (second << bitsNotUsed));
                }
            }

            Ptr += (count * 8);
        }
Ejemplo n.º 3
0
        public sbyte ReadSByte(int bits)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Reading sbyte ({0} bits)", bits);
            }
#endif
            return((sbyte)InternalReadByte(bits));
        }
Ejemplo n.º 4
0
        public void WriteSByte(sbyte value, int bits)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Writing sbyte ({0} bits)", bits);
            }
#endif
            InternalWriteByte((byte)value, bits);
        }
Ejemplo n.º 5
0
        public bool ReadBool()
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Reading bool (1 bit)");
            }
#endif
            return(InternalReadByte(1) == 1);
        }
Ejemplo n.º 6
0
        public bool WriteBool(bool value)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Writing bool (1 bit)");
            }
#endif
            InternalWriteByte(value ? (byte)1 : (byte)0, 1);
            return(value);
        }
Ejemplo n.º 7
0
        public void WriteFloat(float value)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Writing float (32 bits)");
            }
#endif
            UdpByteConverter bytes = value;
            InternalWriteByte(bytes.Byte0, 8);
            InternalWriteByte(bytes.Byte1, 8);
            InternalWriteByte(bytes.Byte2, 8);
            InternalWriteByte(bytes.Byte3, 8);
        }
Ejemplo n.º 8
0
        public bool ReadBool()
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Reading bool (1 bit)");
            }
#endif
            //Core.net.bitsIn += 1;
            Core.net.AddToBandwidthInBuffer(1);

            //UnityEngine.Debug.Log("Read Bool (1 bit");
            return(InternalReadByte(1) == 1);
        }
Ejemplo n.º 9
0
        public bool WriteBool(bool value)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Writing bool (1 bit)");
            }
#endif
            //Core.net.bitsOut += 1;
            Core.net.AddToBandwidthOutBuffer(1);
            //UnityEngine.Debug.Log("Write Bool (1 bit");
            InternalWriteByte(value ? (byte)1 : (byte)0, 1);
            return(value);
        }
Ejemplo n.º 10
0
        public float ReadFloat()
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Reading float (32 bits)");
            }
#endif
            UdpByteConverter bytes = default(UdpByteConverter);
            bytes.Byte0 = InternalReadByte(8);
            bytes.Byte1 = InternalReadByte(8);
            bytes.Byte2 = InternalReadByte(8);
            bytes.Byte3 = InternalReadByte(8);
            return(bytes.Float32);
        }
Ejemplo n.º 11
0
        public ushort ReadUShort(int bits)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Reading ushort ({0} bits)", bits);
            }
#endif
            if (bits <= 8)
            {
                return(InternalReadByte(bits));
            }
            else
            {
                return((ushort)(InternalReadByte(8) | (InternalReadByte(bits - 8) << 8)));
            }
        }
Ejemplo n.º 12
0
        public void WriteDouble(double value)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Writing double (64 bits)");
            }
#endif
            UdpByteConverter bytes = value;
            InternalWriteByte(bytes.Byte0, 8);
            InternalWriteByte(bytes.Byte1, 8);
            InternalWriteByte(bytes.Byte2, 8);
            InternalWriteByte(bytes.Byte3, 8);
            InternalWriteByte(bytes.Byte4, 8);
            InternalWriteByte(bytes.Byte5, 8);
            InternalWriteByte(bytes.Byte6, 8);
            InternalWriteByte(bytes.Byte7, 8);
        }
Ejemplo n.º 13
0
        public void WriteUShort(ushort value, int bits)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Writing ushort ({0} bits)", bits);
            }
#endif
            if (bits <= 8)
            {
                InternalWriteByte((byte)(value & 0xFF), bits);
            }
            else
            {
                InternalWriteByte((byte)(value & 0xFF), 8);
                InternalWriteByte((byte)(value >> 8), bits - 8);
            }
        }
Ejemplo n.º 14
0
        public void WriteULong(ulong value, int bits)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Writing ulong ({0} bits)", bits);
            }
#endif
            if (bits <= 32)
            {
                WriteUInt((uint)(value & 0xFFFFFFFF), bits);
            }
            else
            {
                WriteUInt((uint)(value), 32);
                WriteUInt((uint)(value >> 32), bits - 32);
            }
        }
Ejemplo n.º 15
0
        public uint ReadUInt(int bits)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Reading uint ({0} bits)", bits);
            }
#endif
            //UnityEngine.Debug.Log("Read Int (" + bits + " bits)");
            //Core.net.bitsIn += bits;
            Core.net.AddToBandwidthInBuffer(bits);
            int
                a = 0,
                b = 0,
                c = 0,
                d = 0;

            switch ((bits + 7) / 8)
            {
            case 1:
                a = InternalReadByte(bits);
                break;

            case 2:
                a = InternalReadByte(8);
                b = InternalReadByte(bits - 8);
                break;

            case 3:
                a = InternalReadByte(8);
                b = InternalReadByte(8);
                c = InternalReadByte(bits - 16);
                break;

            case 4:
                a = InternalReadByte(8);
                b = InternalReadByte(8);
                c = InternalReadByte(8);
                d = InternalReadByte(bits - 24);
                break;
            }

            return((uint)(a | (b << 8) | (c << 16) | (d << 24)));
        }
Ejemplo n.º 16
0
        public void WriteUInt(uint value, int bits)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Writing uint ({0} bits)", bits);
            }
#endif
            //UnityEngine.Debug.Log("Write Int (" + bits + " bits)");
            Core.net.AddToBandwidthOutBuffer(bits);
            //Core.net.bitsOut += bits;
            //UnityEngine.Debug.Log(string.Format("Writing uint ({0} bits)", bits));
            byte
                a = (byte)(value >> 0),
                b = (byte)(value >> 8),
                c = (byte)(value >> 16),
                d = (byte)(value >> 24);

            switch ((bits + 7) / 8)
            {
            case 1:
                InternalWriteByte(a, bits);
                break;

            case 2:
                InternalWriteByte(a, 8);
                InternalWriteByte(b, bits - 8);
                break;

            case 3:
                InternalWriteByte(a, 8);
                InternalWriteByte(b, 8);
                InternalWriteByte(c, bits - 16);
                break;

            case 4:
                InternalWriteByte(a, 8);
                InternalWriteByte(b, 8);
                InternalWriteByte(c, 8);
                InternalWriteByte(d, bits - 24);
                break;
            }
        }
Ejemplo n.º 17
0
        public double ReadDouble()
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Reading double (64 bits)");
            }
#endif
            UdpByteConverter bytes = default(UdpByteConverter);
            bytes.Byte0 = InternalReadByte(8);
            bytes.Byte1 = InternalReadByte(8);
            bytes.Byte2 = InternalReadByte(8);
            bytes.Byte3 = InternalReadByte(8);
            bytes.Byte4 = InternalReadByte(8);
            bytes.Byte5 = InternalReadByte(8);
            bytes.Byte6 = InternalReadByte(8);
            bytes.Byte7 = InternalReadByte(8);
            return(bytes.Float64);
        }
Ejemplo n.º 18
0
        public ulong ReadULong(int bits)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Reading ulong ({0} bits)", bits);
            }
#endif
            if (bits <= 32)
            {
                return(ReadUInt(bits));
            }
            else
            {
                ulong a = ReadUInt(32);
                ulong b = ReadUInt(bits - 32);
                return(a | (b << 32));
            }
        }
Ejemplo n.º 19
0
        public uint ReadUInt(int bits)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Reading uint ({0} bits)", bits);
            }
#endif
            int
                a = 0,
                b = 0,
                c = 0,
                d = 0;

            switch ((bits + 7) / 8)
            {
            case 1:
                a = InternalReadByte(bits);
                break;

            case 2:
                a = InternalReadByte(8);
                b = InternalReadByte(bits - 8);
                break;

            case 3:
                a = InternalReadByte(8);
                b = InternalReadByte(8);
                c = InternalReadByte(bits - 16);
                break;

            case 4:
                a = InternalReadByte(8);
                b = InternalReadByte(8);
                c = InternalReadByte(8);
                d = InternalReadByte(bits - 24);
                break;
            }

            return((uint)(a | (b << 8) | (c << 16) | (d << 24)));
        }
Ejemplo n.º 20
0
        public void WriteUInt(uint value, int bits)
        {
#if TRACE_RW
            if (UdpLog.IsEnabled(UdpLog.TRACE))
            {
                UdpLog.Trace("Writing uint ({0} bits)", bits);
            }
#endif
            byte
                a = (byte)(value >> 0),
                b = (byte)(value >> 8),
                c = (byte)(value >> 16),
                d = (byte)(value >> 24);

            switch ((bits + 7) / 8)
            {
            case 1:
                InternalWriteByte(a, bits);
                break;

            case 2:
                InternalWriteByte(b, 8);
                InternalWriteByte(c, bits - 8);
                break;

            case 3:
                InternalWriteByte(a, 8);
                InternalWriteByte(b, 8);
                InternalWriteByte(c, bits - 16);
                break;

            case 4:
                InternalWriteByte(a, 8);
                InternalWriteByte(b, 8);
                InternalWriteByte(c, 8);
                InternalWriteByte(d, bits - 24);
                break;
            }
        }