Exemple #1
0
        internal void RegisterControlMessage <T>(MyControlMessageEnum msg, ControlMessageHandler <T> handler, MyMessagePermissions permission) where T : struct
        {
            MyControlMessageCallback <T> callback = new MyControlMessageCallback <T>(handler, MySyncLayer.GetSerializer <T>(), permission);

            m_controlMessageHandlers.Add((int)msg, callback);
            m_controlMessageTypes.Add(typeof(T), msg);
        }
Exemple #2
0
        protected void RegisterControlMessage <T>(MyControlMessageEnum msg, ControlMessageHandler <T> handler) where T : struct
        {
            MyControlMessageCallback <T> callback = new MyControlMessageCallback <T>(handler, MySyncLayer.GetSerializer <T>());

            m_controlMessageHandlers.Add((int)msg, callback);
            m_controlMessageTypes.Add(typeof(T), msg);
        }
Exemple #3
0
        protected void SendControlMessage <T>(ulong user, ref T message, bool reliable = true) where T : struct
        {
            ITransportCallback   callback;
            MyControlMessageEnum enum2;

            this.m_controlMessageTypes.TryGetValue(typeof(T), out enum2);
            this.m_controlMessageHandlers.TryGetValue((int)enum2, out callback);
            MyControlMessageCallback <T> callback2 = (MyControlMessageCallback <T>)callback;

            if (MySyncLayer.CheckSendPermissions(user, callback2.Permission))
            {
                MyNetworkWriter.MyPacketDescriptor packet = MyNetworkWriter.GetPacketDescriptor(new EndpointId(user), reliable ? MyP2PMessageEnum.ReliableWithBuffering : MyP2PMessageEnum.Unreliable, 0);
                packet.Header.WriteUShort((ushort)enum2);
                callback2.Write(packet.Header, ref message);
                MyNetworkWriter.SendPacket(packet);
            }
        }