//https://www.cnblogs.com/hobinly/p/7157481.html
        //https://developers.google.com/protocol-buffers/docs/techniques?csw=1#streaming
        //https://stackoverflow.com/questions/48558451/using-protobuf-codedinputstream-to-read-from-byte
        private void LateUpdate()
        {
            if (!NGNetwork.IsConnected)
            {
                return;
            }
            mCurTime += Time.deltaTime;
            if (mCurTime > TransmitInterval)
            {
                mCurTime = 0;
                ViewSyncParams paramss = _container.SerializeAll();

                if (paramss.VsdParams.Count == 0)
                {
                    return;
                }

                SendMessage viewsyncmsg = new SendMessage();
                viewsyncmsg.MsgType  = MessageType.ViewSync;
                viewsyncmsg.VsParams = paramss;

                var buf = NGMessageCodec.Encode(viewsyncmsg.ToByteArray());


                NGNetwork.Socket.Send(buf);
            }
        }
Exemplo n.º 2
0
        public void UnsubscribeMsgChannels(uint[] channelids)
        {
            SendMessage unsubmsg = new SendMessage();

            unsubmsg.MsgType = MessageType.UnSubscribeMsgChannels;
            unsubmsg.UsmcParams.Channelids.AddRange(channelids);

            var buf = NGMessageCodec.Encode(unsubmsg.ToByteArray());

            NGNetwork.Socket.Send(buf);
        }
Exemplo n.º 3
0
        public void LeaveRoom()
        {
            SendMessage leaveroom = new SendMessage();

            leaveroom.MsgType = MessageType.LeaveRoom;

            var buf = NGMessageCodec.Encode(leaveroom.ToByteArray());

            NGNetwork.Socket.Send(buf);

            NGInterface.CurrentRoom().ClearPlayers();
        }
Exemplo n.º 4
0
        public void JoinRoom(string roomid)
        {
            SendMessage joinroom = new SendMessage();

            joinroom.MsgType         = MessageType.JoinRoom;
            joinroom.JrParams        = new JoinRoomParams();
            joinroom.JrParams.RoomId = roomid;

            var buf = NGMessageCodec.Encode(joinroom.ToByteArray());

            NGNetwork.Socket.Send(buf);

            this.RoomName = roomid;
        }
Exemplo n.º 5
0
    //Send RPC to server
    public static void SendRPC(uint viewID, string methodname, RPCTarget target, params NGAny[] parameters)
    {
        SendMessage message = new SendMessage();

        message.MsgType              = MessageType.Rpc;
        message.RpcParams            = new RPCParams();
        message.RpcParams.MethodName = methodname;
        message.RpcParams.Target     = target;
        message.RpcParams.ViewID     = viewID;
        message.RpcParams.Parameters.AddRange(parameters);

        var buf = NGMessageCodec.Encode(message.ToByteArray());

        NGNetwork.Socket.Send(buf);
    }
Exemplo n.º 6
0
        public void CreateRoom(string roomid, uint maxnumber)
        {
            SendMessage creatroom = new SendMessage();

            creatroom.MsgType            = MessageType.CreateRoom;
            creatroom.CrParams           = new CreateRoomParams();
            creatroom.CrParams.RoomId    = roomid;
            creatroom.CrParams.MaxNumber = maxnumber;

            var buf = NGMessageCodec.Encode(creatroom.ToByteArray());

            NGNetwork.Socket.Send(buf);

            this.RoomName = roomid;
        }
Exemplo n.º 7
0
        public static void SendCustomEvent(uint eventid, uint[] targetpeerids, NGAny[] customdata)
        {
            SendMessage ce = new SendMessage();

            ce.MsgType = MessageType.CustomEvent;

            ce.CeParams         = new CustomEventParams();
            ce.CeParams.EventID = eventid;

            ce.CeParams.TargetPeerIds.AddRange(NGProtobufConverter <uint> .Array2RepeatedField(targetpeerids));
            ce.CeParams.CustomData.AddRange(NGProtobufConverter <NGAny> .Array2RepeatedField(customdata));

            var buf = NGMessageCodec.Encode(ce.ToByteArray());

            NGNetwork.Socket.Send(buf);
        }
Exemplo n.º 8
0
        public void Instantiate(string prefabname, Vector3 position, Quaternion rotation, uint[] viewids)
        {
            SendMessage i = new SendMessage();

            i.MsgType = MessageType.Instantiation;

            i.IParams            = new InstantiationParams();
            i.IParams.PrefabName = prefabname;
            i.IParams.Position   = position;
            i.IParams.Rotation   = rotation;
            i.IParams.ViewIDs.AddRange(NGProtobufConverter <uint> .Array2RepeatedField(viewids));

            var buf = NGMessageCodec.Encode(i.ToByteArray());

            NGNetwork.Socket.Send(buf);
        }
Exemplo n.º 9
0
        public IEnumerator Process()
        {
            lock (NGNetwork.Socket.MBufferQueue)
            {
                // NGLogger.LogDebug("Lock BufferQueue");
                while (NGNetwork.Socket.MBufferQueue.Count > 0)
                {
                    //NGLogger.LogDebug("Proceess BufferQueue");
                    NGBuffer buffer = NGNetwork.Socket.MBufferQueue.Dequeue();
                    mReceiveCache.AddRange(buffer.Bytes);
                    byte[] currBytes;
                    while ((currBytes = NGMessageCodec.Decode(ref mReceiveCache)) != null)
                    {
                        //NGLogger.LogDebug("Decode message from BufferQueue");
                        //mReceiveCache.Clear();
                        //ProcessRecieveData(currBytes);
                        MessageProcessor(currBytes);
                    }
                }
            }

            yield return new WaitForSeconds(2);
        }