Get() public static method

public static Get ( int size ) : ByteArrayBuffer
size int
return ByteArrayBuffer
Ejemplo n.º 1
0
        public void SendData(ConnectionId userId, byte[] data, int offset, int length, bool reliable)
        {
            //if(Network.isServer && method == DeliveryMode.Unreliable && userId != UserIdAll)
            //{
            //    throw new InvalidOperationException("Unity only allows to send to all clients at once from server.");
            //}
            //if(Network.isClient && method == DeliveryMode.Unreliable && (_KnownPlayers.ContainsKey(userId) == false ||_KnownPlayers[userId].player != Network.connections[0]))
            //{
            //    throw new InvalidOperationException("Can only send to server");
            //}



            if (reliable)
            {
                NetworkPlayer pl = this.mKnownPlayers[userId].ConnectedUser;
                NetworkView   nv = GetComponent <NetworkView>();


                nv.RPC("DeliverMessage", pl, data);
            }
            else
            {
                Queue <ByteArrayBuffer> userOut;
                bool found = mOutgoingUnreliableMessages.TryGetValue(userId, out userOut);
                if (found == false)
                {
                    userOut = new Queue <ByteArrayBuffer>();
                    mOutgoingUnreliableMessages.Add(userId, userOut);
                }
                ByteArrayBuffer msg = ByteArrayBuffer.Get(length);
                msg.CopyFrom(data, offset, length);
                userOut.Enqueue(msg);
            }
        }
Ejemplo n.º 2
0
        public void SingleEndpoint_OnSerialize(BitStream stream, NetworkPlayer senderOrReceiver)
        {
            //doesnt work. server sends messages automatically to all others


            if (stream.isReading)
            {
                char countin = (char)0;
                stream.Serialize(ref countin);
                int count = (int)countin;
                //Debug.Log(count + " packages sent");
                for (int k = 0; k < count; k++)
                {
                    int   length   = 0;
                    short lengthin = 0;
                    stream.Serialize(ref lengthin);
                    length = ((int)(ushort)lengthin); //just making sure it converts the - values back into high positive values
                    ByteArrayBuffer msg = ByteArrayBuffer.Get(length);



                    for (int i = 0; i < length; i++)
                    {
                        char c = 'v';
                        stream.Serialize(ref c);
                        msg.array[i] = (byte)c;
                        msg.positionWrite++;
                    }
                    NetworkEvent ev = new NetworkEvent(NetEventType.UnreliableMessageReceived, NetworkPlayerToConnectionId(senderOrReceiver), msg);
                    mEvents.Enqueue(ev);
                }
            }
            else
            {
                Queue <ByteArrayBuffer> userOut;
                ConnectionId            userid;
                userid = NetworkPlayerToConnectionId(senderOrReceiver);

                // NetworkPlayerToInt(senderOrReceiver);

                bool found = mOutgoingUnreliableMessages.TryGetValue(userid, out userOut);

                if (found && userOut.Count > 0)
                {
                    char count = (char)0;
                    if (userOut.Count > 255)
                    {
                        Debug.LogWarning("Too many messages at once");
                        count = (char)255;
                    }
                    else
                    {
                        count = (char)userOut.Count;
                    }

                    stream.Serialize(ref count);

                    for (int i = 0; userOut.Count > 0 && i < 256; i++)
                    {
                        ByteArrayBuffer msg = userOut.Dequeue();

                        short length = (short)msg.positionWrite;

                        stream.Serialize(ref length);
                        for (int k = 0; k < length; k++)
                        {
                            char c = (char)msg.array[k];
                            stream.Serialize(ref c);
                        }
                        msg.Dispose();
                    }
                    //Debug.Log(count + " messages sent to " + userid);
                }
            }
        }