Esempio n. 1
0
        private static void StateUpdateTimerOnElapsed(Object source, ElapsedEventArgs e)
        {
            _bitBuffer.Clear();
            _bitBuffer.AddByte(3);
            _bitBuffer.AddUShort((ushort)_dataToSend.Count);
            foreach (PlayerData playerData in _dataToSend)
            {
                _bitBuffer.AddUShort(playerData.id);
                _bitBuffer.AddUInt(playerData.qX);
                _bitBuffer.AddUInt(playerData.qY);
            }

            _bitBuffer.ToArray(_buffer);
            _webServer.SendAll(_connectedIds, new ArraySegment <byte>(_buffer, 3 + 10 * _dataToSend.Count));
        }
Esempio n. 2
0
    void LateUpdate()
    {
        _ws.ProcessMessageQueue(this);

        if (_ws.ConnectionState == ClientState.Connected)
        {
            if (Time.time - _timeSinceLastSend > SendInterval)
            {
                _timeSinceLastSend = Time.time;

                QuantizedVector3    qPosition = BoundedRange.Quantize(_modelTransform.position, Constants.WORLD_BOUNDS);
                QuantizedQuaternion qRotation = SmallestThree.Quantize(_modelTransform.rotation);
                ushort qBestTime = HalfPrecision.Quantize(GameTimer.BestTime);
                _bitBuffer.Clear();
                _bitBuffer.AddUInt(qPosition.x)
                .AddUInt(qPosition.y)
                .AddUInt(qPosition.z)
                .AddUInt(qRotation.m)
                .AddUInt(qRotation.a)
                .AddUInt(qRotation.b)
                .AddUInt(qRotation.c)
                .AddUShort(qBestTime)
                .ToArray(_byteBuffer);
                _ws.Send(new ArraySegment <byte>(_byteBuffer, 0, 28));
            }
        }
    }
Esempio n. 3
0
 public static BitBuffer AddFloat(this BitBuffer buffer, float value)
 {
     buffer.AddUInt(new UIntFloat {
         floatValue = value
     }.uintValue);
     return(buffer);
 }
Esempio n. 4
0
        public static BitBuffer AddVector3(this BitBuffer buffer, Vector3 value, BoundedRange[] range)
        {
            var compressed = BoundedRange.Compress(value, range);

            buffer.AddUInt(compressed.x).AddUInt(compressed.y).AddUInt(compressed.z);
            return(buffer);
        }
Esempio n. 5
0
    // Update is called once per frame
    void LateUpdate()
    {
        _webServer.ProcessMessageQueue(this);

        if (Time.time - _timeSinceLastSend > SendInterval)
        {
            _timeSinceLastSend = Time.time;
            ushort validCount = 0; //incremented every loop where player transform isnt null

            _bitBuffer.Clear();
            _bitBuffer.AddUShort(1); // state message
            _bitBuffer.AddUShort((ushort)_playerTransforms.Count);
            foreach (var player in _playerTransforms)
            {
                if (player.Value != null)
                {
                    validCount++;
                    _bitBuffer.AddUShort(player.Key);
                    for (int i = 0; i < 8; i++)
                    {
                        _bitBuffer.AddUInt(player.Value[i]);
                    }
                }
            }

            _bitBuffer.ToArray(_bigBuffer);
            _webServer.SendAll(_connectionIds, new ArraySegment <byte>(_bigBuffer, 0, 6 + 30 * validCount));
        }
    }
 private static void StateUpdateTimerOnElapsed(Object source, ElapsedEventArgs e)
 {
     _bitBuffer.Clear();
     _bitBuffer.AddByte(3);
     _bitBuffer.AddUShort((ushort)_dataToSend.Count);
     foreach (PlayerData playerData in _dataToSend)
     {
         _bitBuffer.AddUInt(playerData.qX);
     }
 }
    private void SendUnreliable(uint value)
    {
        unsafe
        {
            _sentUnreliable++;
            var id = _detector.AddHeaderForPeerId((ushort)_client.ID, _buffer);

            _buffer.AddUInt(value);

            var length = _buffer.Length;
            var ptr    = Marshal.AllocHGlobal(length);
            var span   = new Span <byte>(ptr.ToPointer(), length);
            _buffer.ToSpan(ref span);

            var data = new PacketData
            {
                Data = ptr, Length = length, SequenceId = id
            };

            _buffer.Clear();

            var canSend = _detector.EnqueueData((ushort)_client.ID, data);

            if (canSend)
            {
                var packet = new Packet();
                packet.Create(data.Data, data.Length, PacketFlags.None);
                _sendData.Enqueue(new SendData {
                    Packet = packet, Peer = _client
                });
            }
            else
            {
                _client.DisconnectNow(0);
            }
        }
    }
 public override BitBuffer PackVariable(BitBuffer buffer)
 {
     buffer.AddUInt(Value);
     return(buffer);
 }
Esempio n. 9
0
 public static BitBuffer AddUShort(this BitBuffer buffer, ushort value)
 {
     buffer.AddUInt(value);
     return(buffer);
 }