Ejemplo n.º 1
0
        public void UpdateVarsMessageTest()
        {
            // try setting value with constructor
            UpdateVarsMessage message = new UpdateVarsMessage
            {
                netId   = 42,
                payload = new ArraySegment <byte>(new byte[] { 0x01, 0x02 })
            };

            // serialize
            NetworkWriter writer = new NetworkWriter();

            message.Serialize(writer);
            byte[] writerData = writer.ToArray();

            // deserialize the same data - do we get the same result?
            UpdateVarsMessage fresh = new UpdateVarsMessage();

            fresh.Deserialize(new NetworkReader(writerData));
            Assert.That(fresh.netId, Is.EqualTo(message.netId));
            Assert.That(fresh.payload.Count, Is.EqualTo(message.payload.Count));
            for (int i = 0; i < fresh.payload.Count; ++i)
            {
                Assert.That(fresh.payload.Array[fresh.payload.Offset + i],
                            Is.EqualTo(message.payload.Array[message.payload.Offset + i]));
            }
        }
Ejemplo n.º 2
0
        public void UnpackWrongMessage()
        {
            SpawnMessage message = new SpawnMessage();

            byte[] data = PackToByteArray(message);

            Assert.Throws <FormatException>(() =>
            {
                UpdateVarsMessage unpacked = UnpackFromByteArray <UpdateVarsMessage>(data);
            });
        }
Ejemplo n.º 3
0
        public void UpdateVarsMessageTest()
        {
            // try setting value with constructor
            var message = new UpdateVarsMessage
            {
                netId   = 42,
                payload = new ArraySegment <byte>(new byte[] { 0x01, 0x02 })
            };
            var arr   = MessagePacker.Pack(message);
            var fresh = MessagePacker.Unpack <UpdateVarsMessage>(arr);

            Assert.That(fresh.netId, Is.EqualTo(message.netId));
            Assert.That(fresh.payload.Count, Is.EqualTo(message.payload.Count));
            for (var i = 0; i < fresh.payload.Count; ++i)
            {
                Assert.That(fresh.payload.Array[fresh.payload.Offset + i],
                            Is.EqualTo(message.payload.Array[message.payload.Offset + i]));
            }
        }
Ejemplo n.º 4
0
        public void UpdateVarsMessage()
        {
            // try setting value with constructor
            UpdateVarsMessage message = new UpdateVarsMessage
            {
                netId   = 42,
                payload = new ArraySegment <byte>(new byte[] { 0x01, 0x02 })
            };

            byte[]            arr   = MessagePackerTest.PackToByteArray(message);
            UpdateVarsMessage fresh = MessagePackerTest.UnpackFromByteArray <UpdateVarsMessage>(arr);

            Assert.That(fresh.netId, Is.EqualTo(message.netId));
            Assert.That(fresh.payload.Count, Is.EqualTo(message.payload.Count));
            for (int i = 0; i < fresh.payload.Count; ++i)
            {
                Assert.That(fresh.payload.Array[fresh.payload.Offset + i],
                            Is.EqualTo(message.payload.Array[message.payload.Offset + i]));
            }
        }
Ejemplo n.º 5
0
        // invoked by unity runtime immediately after the regular "Update()" function.
        internal void UNetUpdate()
        {
            // go through each channel
            for (int channelId = 0; channelId < NetworkServer.numChannels; channelId++)
            {
                // serialize all the dirty components and send (if any were dirty)
                NetworkWriter writer = new NetworkWriter();
                if (OnSerializeAllSafely(m_NetworkBehaviours, writer, false, channelId))
                {
#if UNITY_EDITOR
                    UnityEditor.NetworkDetailStats.IncrementStat(
                        UnityEditor.NetworkDetailStats.NetworkDirection.Outgoing,
                        (short)MsgType.UpdateVars, name, 1);
#endif
                    // construct message and send
                    UpdateVarsMessage message = new UpdateVarsMessage();
                    message.netId   = netId;
                    message.payload = writer.ToArray();

                    NetworkServer.SendByChannelToReady(gameObject, (short)MsgType.UpdateVars, message, channelId);
                }
            }
        }
        static void OnUpdateVarsMessage(NetworkMessage netMsg)
        {
            UpdateVarsMessage message = netMsg.ReadMessage <UpdateVarsMessage>();

            if (LogFilter.logDev)
            {
                Debug.Log("ClientScene::OnUpdateVarsMessage " + message.netId + " channel:" + netMsg.channelId);
            }

            NetworkIdentity localObject;

            if (s_NetworkScene.GetNetworkIdentity(message.netId, out localObject))
            {
                localObject.OnUpdateVars(new NetworkReader(message.payload), false);
            }
            else
            {
                if (LogFilter.logWarn)
                {
                    Debug.LogWarning("Did not find target for sync message for " + message.netId + " . Note: this can be completely normal because UDP messages may arrive out of order, so this message might have arrived after a Destroy message.");
                }
            }
        }