public void DeserializeAll(RepeatedField <ViewSyncDataParams> vsdparams) { if (ID2Views.Count == 0) { return; } foreach (var val in vsdparams) { NGViewStream stream = new NGViewStream(); stream.mReceiveStream = NGProtobufConverter <NGAny> .RepeatedField2List(val.ViewSyncData); //NGLogger.LogDebug(val.ViewID.ToString()); ID2Views[val.ViewID].Deserialization(stream); } }
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); }
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); }
private void ProcessRecieveData(byte[] data) { //NGLogger.LogInfo("Receive a message"); Stream stream = new MemoryStream(data); ReceiveMessage message = ReadMessage <ReceiveMessage>(stream); switch (message.ReceiveMsgType) { case ReceiveMessageType.ResponseSocketStatus: switch (message.RssMsg.SStatus) { case SocketStatus.Connected: NGNetwork.Status = SocketStatus.Connected; NGNetworkEvent.OnConnected(); break; } break; case ReceiveMessageType.ResponseOperation: ResponseOperationMessage rmsg = message.RoMsg; NGInterface.CurrentRoom().ResponseProcessor(rmsg); break; case ReceiveMessageType.Forward: ForwardMessage fmsg = message.FMsg; uint peerId = fmsg.PeerId; switch (fmsg.MsgType) { case MessageType.JoinRoom: var jrParams = fmsg.JrfParams; NGPlayer newplayer = new NGPlayer(false, peerId); NGInterface.CurrentRoom().AddPlayer(newplayer); NGEvent.OnOtherPlayerEnteredRoom(newplayer); break; case MessageType.JoinOrCreateRoom: var jocParams = fmsg.JocrfParams; NGPlayer player = new NGPlayer(false, peerId); NGInterface.CurrentRoom().AddPlayer(player); NGEvent.OnOtherPlayerEnteredRoom(player); break; case MessageType.LeaveRoom: var lParams = fmsg.LrfParams; NGLogger.LogDebug("LeaveRoom" + peerId); var leaveplayer = NGInterface.CurrentRoom().GetNGPlayer(peerId); NGEvent.OnOtherPlayerLeftRoom(leaveplayer); Destroy(leaveplayer.GO); NGInterface.CurrentRoom().RemovePlayer(peerId); break; case MessageType.Rpc: var rpcparams = fmsg.RfParams; NGAny[] objs = NGProtobufConverter <NGAny> .RepeatedField2Array(rpcparams.Parameters); NGRPC.ExcuteRPC(rpcparams.ViewID, rpcparams.MethodName, objs); break; case MessageType.Instantiation: var i = fmsg.IfParams; var ids = NGProtobufConverter <uint> .RepeatedField2Array(i.ViewIDs); NGInterface.CurrentRoom().Instantiate(peerId, false, ids, i.PrefabName, i.Position, i.Rotation); break; case MessageType.ViewSync: var viewsyncparams = fmsg.VsfParams; var viewParams = viewsyncparams.VsdParams; NGViewContainer container = new NGViewContainer(); container.DeserializeAll(viewParams); break; case MessageType.CustomEvent: var ceParams = fmsg.CeParams; NGEvent.OnCustomEvent(ceParams.EventID, NGProtobufConverter <NGAny> .RepeatedField2Array(ceParams.CustomData)); break; } break; } }