Exemplo n.º 1
0
 protected virtual void DispatchPacket(MPRecvPacketContainer pc)
 {
     if (pc.packet is Packet_Basic_Instantiate)
     {
         Packet_Basic_Instantiate instantiate = pc.As <Packet_Basic_Instantiate>();
         this.BindImportantFixedChannel(pc.runtimeID, instantiate.ChannelSequence);
         this._pendingInstantiates.Add(pc.runtimeID, instantiate.PeerType);
     }
     else if (pc.packet is Packet_Basic_Destroy)
     {
         this.RemoveMPIdentity(pc.runtimeID);
     }
     else if (this._pendingInstantiates.ContainsKey(pc.runtimeID))
     {
         System.Type type = MPMappings.MPPeerMapping.Get(this._pendingInstantiates[pc.runtimeID]);
         this.CreateRemoteMPIdentity(type, pc.runtimeID, pc);
         this._pendingInstantiates.Remove(pc.runtimeID);
     }
     else if (pc.channel == this._peer.reliableChannel)
     {
         this._identities[pc.runtimeID].OnReliablePacket(pc);
     }
     else
     {
         BaseMPIdentity identity;
         if ((pc.channel == this._peer.stateUpdateChannel) && this._identities.TryGetValue(pc.runtimeID, out identity))
         {
             identity.OnStateUpdatePacket(pc);
         }
     }
 }
Exemplo n.º 2
0
        public T InstantiateMPIdentity <T>(uint runtimeID, MPSendPacketContainer initPc) where T : BaseMPIdentity, new()
        {
            int num = this.AllocChannelSequenceForRuntimeID(runtimeID);
            MPSendPacketContainer pc = this.CreateSendPacket <Packet_Basic_Instantiate>(this._instantiateBuilder);

            Packet_Basic_Instantiate.StartPacket_Basic_Instantiate(pc.builder);
            Packet_Basic_Instantiate.AddPeerType(pc.builder, (byte)MPMappings.MPPeerMapping.Get(typeof(T)));
            Packet_Basic_Instantiate.AddChannelSequence(pc.builder, (byte)num);
            pc.Finish <Packet_Basic_Instantiate>(Packet_Basic_Instantiate.EndPacket_Basic_Instantiate(pc.builder));
            this.SendReliableToOthers(runtimeID, pc);
            this.SendReliableToOthers(runtimeID, initPc);
            return(this.CreateMPIdentity <T>(runtimeID));
        }